Russian Qt Forum
Май 04, 2024, 07:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qt and MS WORD  (Прочитано 20353 раз)
Maclaren_4
Гость
« : Апрель 24, 2012, 15:39 »

Здравствуйте !!!
Кто работал с MS WORD в QT !!???

У меня есть таблица , как добавить строку Непонимающий
Как скрыть границы Непонимающий
И как скопировать существующую таблицу и вставить после первой Непонимающий
Записан
Maclaren_4
Гость
« Ответ #1 : Апрель 25, 2012, 11:32 »

С строками разобрался кому нид вот код :

Код:
   QAxObject* Tables = ActD->querySubObject("Tables()");
   QAxObject* NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)",
                                                ActD->dynamicCall("Range()"), 4,4,1,1);

   QAxObject * row = NewTable->querySubObject("Rows()");
  
   row->dynamicCall("Add()");

Вопрос с копирование таблицы остается АКТУАЛЬНЫМ !!! (Помогите разве никто не сталкивался Непонимающий!!!)
« Последнее редактирование: Апрель 25, 2012, 23:55 от Maclaren_4 » Записан
Maclaren_4
Гость
« Ответ #2 : Июнь 14, 2012, 12:46 »

Помогите срочно !!! Как открыть файл (*.док) только для чтения !!!!
Записан
hadey
Гость
« Ответ #3 : Июнь 14, 2012, 13:55 »

Может поможет.
    word_app = new QAxObject("Word.Application", this);
    if (!word_app)
        return false;

    word_file = word_app->querySubObject("Documents()");
    if (!word_file)
        return false;

    word_file->querySubObject("Open(const QString&)", changeName(doc_name));

    word_selection = word_app->querySubObject("Selection");
    if (!word_selection)
        return false;

    word_find = word_selection->querySubObject("Find");
    if (!word_find)
        return false;

    word_app->querySubObject("ActiveDocument")->dynamicCall("Close()");
    word_app->dynamicCall("SetDisplayAlerts(bool)", FALSE);
    word_app->dynamicCall("Quit()");
Записан
CJ1
Гость
« Ответ #4 : Июнь 17, 2012, 12:50 »

Нужна помощь, есть файл doc, нужно его открыть, найти в нем первую таблицу, и загрузить каждый элемент к себе в прогу, как получить доступ к ячейкам?
Записан
Maclaren_4
Гость
« Ответ #5 : Июнь 20, 2012, 15:07 »

Код:
            QList<QString> t;
            mQ->setQuery("Select Владелец.Владелец , Владелец.Адресс, Владелец.Телефон, Владелец.email, Владелец.Клуб from View, Animals, Владелец where Владелец.ID_Owner= Animals.ID_Owner And Animals.ID_Cat=View.ID_Cat And View.ID = 1",dbSql);
            for (int i = 0 ; i < mQ->rowCount();i++)
            {
                QString top = QString::number(i+1).append("_").append(mQ->data(mQ->index(i,0)).toString().append("_").append(mQ->data(mQ->index(i,1)).toString().append("_").append(mQ->data(mQ->index(i,2)).toString().append("_").append(mQ->data(mQ->index(i,3)).toString().append("_")).append(mQ->data(mQ->index(i,4)).toString()))));
                qDebug() << top;
                t.append(top);
            }
            QAxObject *Wa = new QAxObject ("Word.Application");
            QAxObject *Wd = Wa->querySubObject("Documents()");
            Wd->querySubObject("Open(QVariant)",QDir::currentPath().append("\\Rep\\NygdaychieV_Gostinace.doc"));
            Wa->setProperty("Visible",true);
            QAxObject* ActD = Wa->querySubObject("ActiveDocument()") ;
            QAxObject* range = ActD->querySubObject("Tables(1)") ;
             QAxObject* row = range->querySubObject("Rows()") ;
            //--------------------------------------------------------------
            QAxObject* cell = range->querySubObject("Cell(Row, Column)" , 0,0) ;
            QAxObject *celR = cell->querySubObject("Range()") ;
            qDebug() << t.size();
            for (int i = 0 ;i < t.size();i++)
            {
                row->dynamicCall("Add()") ;
                qDebug()<< i ;
                QString f = t.at((i));
                QStringList g = f.split("_");
                qDebug()<< g.at(1);
                for (int j = 0 ; j < g.size() ; j++)
                {
                    cell = range->querySubObject("Cell(Row, Column)" , i+1,j+1) ;
                    celR = cell->querySubObject("Range()") ;
                    celR->dynamicCall("InsertAfter(Text)" ,g.at(j)) ;
                }
            }
return;

Вот функция , считывает з базы данных данные и заносит их в таблицу в  *.doc !!
Записан
Maclaren_4
Гость
« Ответ #6 : Июнь 20, 2012, 15:08 »

Как перейти на новую страницу ??
Записан
Maclaren_4
Гость
« Ответ #7 : Июнь 30, 2012, 14:53 »

Как скопировать таблицу Непонимающий?
Я делаю вот так :
Код:
    QAxObject *Wa = new QAxObject ("Word.Application");
    QAxObject *Wd = Wa->querySubObject("Documents()");
    Wd->querySubObject("Open(QVariant)",QDir::currentPath().append("\\Rep\\test.doc"));
    Wa->setProperty("Visible",true);
    QAxObject* ActD = Wa->querySubObject("ActiveDocument()") ;
    QAxObject* Range_1 = ActD->querySubObject("Range()") ;

    QAxObject* Tables = ActD->querySubObject("Tables()") ;
    QAxObject* NewTables = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTablesBehavior, AutoFitBehavior)",
                                                  ActD->dynamicCall("Range()"),4,4,1,1) ;

    //QAxObject* Range_2 = ActD->querySubObject("Range()") ;
    NewTables->dynamicCall("Select()") ;
    NewTables->dynamicCall("Copy()");
Записан
Maclaren_4
Гость
« Ответ #8 : Июль 01, 2012, 19:06 »

как написать в Qt такой макрос Непонимающий   

Selection.Tables(1).Select
    Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
    Selection.MoveDown Unit:=wdLine, Count:=2
Записан
Maclaren_4
Гость
« Ответ #9 : Август 26, 2012, 17:04 »

Как в ячейке сделать выравнивание по центру?Непонимающий
Записан
Maclaren_4
Гость
« Ответ #10 : Август 26, 2012, 23:01 »

Готово !! кому понадобиться , пользуйтесь !!!
Код:
QAxObject *Wa = new QAxObject ("Word.Application");
QAxObject *Wd = Wa->querySubObject("Documents()");
QString ex = QDir::currentPath().append("\\Rep\\test.doc");
Wd->querySubObject("Open(QVariant)",ex );//OtchetV_CMI
Wa->setProperty("Visible",true);
QAxObject* ActD = Wa->querySubObject("ActiveDocument()") ;
QAxObject* range = ActD->querySubObject("Tables(1)") ;
QAxObject* row = range->querySubObject("Rows()") ;
QAxObject* cell = range->querySubObject("Cell(Row, Column)" , 0,0) ;
QAxObject *celR = cell->querySubObject("Range()") ;
QAxObject* selection = Wa->querySubObject("Selection") ;
                                QAxObject* pswds=selection->querySubObject("ParagraphFormat()");
                                pswds->dynamicCall("SetAlignment(WdParagraphAlignment)" ,1) ;
Записан
Maclaren_4
Гость
« Ответ #11 : Сентябрь 17, 2012, 23:59 »

Кто знает как вставить разрыв страницы , в средине таблицы !!???
Я делаю вот так не получаеться !!!
Код:
QAxObject* cell = range->querySubObject("Cell(Row, Column)" , 3,1) ;
    QAxObject* row = range->querySubObject("Rows()");
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    row->dynamicCall("Add()") ;
    QAxObject *celR = cell->querySubObject("Range()") ;
    celR = cell->querySubObject("Range()") ;
     celR->dynamicCall("InsertBreak()");
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 20.