Название: qt and MS WORD
Отправлено: Maclaren_4 от Апреля 24, 2012, 15:39
Здравствуйте !!! Кто работал с MS WORD в QT !!???
У меня есть таблица , как добавить строку ??? Как скрыть границы ??? И как скопировать существующую таблицу и вставить после первой ???
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Апреля 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()");
Вопрос с копирование таблицы остается АКТУАЛЬНЫМ !!! (Помогите разве никто не сталкивался ???!!!)
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Июня 14, 2012, 12:46
Помогите срочно !!! Как открыть файл (*.док) только для чтения !!!!
Название: Re: qt and MS WORD
Отправлено: hadey от Июня 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()");
Название: Re: qt and MS WORD
Отправлено: CJ1 от Июня 17, 2012, 12:50
Нужна помощь, есть файл doc, нужно его открыть, найти в нем первую таблицу, и загрузить каждый элемент к себе в прогу, как получить доступ к ячейкам?
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Июня 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 !!
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Июня 20, 2012, 15:08
Как перейти на новую страницу ??
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Июня 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()");
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Июля 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
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Августа 26, 2012, 17:04
Как в ячейке сделать выравнивание по центру????
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Августа 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) ;
Название: Re: qt and MS WORD
Отправлено: Maclaren_4 от Сентября 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()");
|