Название: ActiveQt word
Отправлено: Rofl113 от Июнь 03, 2013, 10:47
Перерыл и этот форум и все близлежащие по версии "Google". Две проблемы: 1). Не смог добавить таблицу после текста. (Все стерлось) 2). Выравнивание, как делать локально, а не глобально? Очень прошу помочь Вот собственно мой кусок программы (текст изменил) char const* const TablesAdd = "Add(QVariant&, QVariant&, QVariant&, QVariant&, QVariant&)";
QAxObject *word = new QAxObject("Word.Application", this); cheackErr(word, "word"); QAxObject *documents = word->querySubObject("Documents"); //получаем коллекцию документов cheackErr(documents, "documents"); QAxObject *document = documents->querySubObject("Add()"); //добавляем свой документ в коллекцию cheackErr(document, "document"); word->setProperty("Visible", true);
QAxObject* ActiveDocument = word->querySubObject("ActiveDocument()"); cheackErr(ActiveDocument, "ActiveDocument"); ActiveDocument->setProperty("Name", tr("Список") ); //добавляем свой документ в коллекцию
QAxObject* selection = word->querySubObject("Selection") ; cheackErr(selection, "selection"); QAxObject* Range = ActiveDocument->querySubObject("Range()"); cheackErr(Range, "Range");
QAxObject *shrift = Range->querySubObject("Font"); cheackErr(shrift, "shrift"); shrift->setProperty("Size", 12); //задаем размер шрифта shrift->setProperty("Name", "Times New Roman"); QString lol = shrift->property("Name").toString(); ui->lineEdit->setText(lol); QAxObject* Tables = selection->querySubObject("Tables()"); cheackErr(Tables, "Tables");
//NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", Range->dynamicCall("Range()"), 5, 3, 1, 2); QAxObject* NewTable = Tables->querySubObject("Add(const QVariant&, const QVariant&, const QVariant&, const QVariant&, const QVariant&)", ActiveDocument->dynamicCall("Range()"), 1, 3, 0, 2); cheackErr(NewTable, "NewTable"); QAxObject* cell = NewTable->querySubObject("Cell(Row, Column)" , 0,1) ; cheackErr(cell, "cell"); QAxObject* celR = cell->querySubObject("Range()") ; cheackErr(celR, "celR");
//QAxObject* selection = ActiveDocument->querySubObject("Selection") ; QAxObject* pswds=selection->querySubObject("ParagraphFormat()"); pswds->dynamicCall("SetAlignment(WdParagraphAlignment)" ,1) ;
celR->querySubObject("InsertAfter(QString)", tr("«УТВЕРЖДАЮ»\n") ); celR->querySubObject("InsertAfter(QString)", tr("Начальник Бобров\n") ); celR->querySubObject("InsertAfter(QString)", tr("В.Б. Бобров\n\n") ); celR->querySubObject("InsertAfter(QString)", tr("« » ____________ 2013 г.\n") ); cell = NewTable->querySubObject("Cell(Row, Column)" , 0,3) ; cheackErr(cell, "cell2"); celR = cell->querySubObject("Range()") ; cheackErr(celR, "celR2");
celR->querySubObject("InsertAfter(QString)", tr("Приложение \n") ); celR->querySubObject("InsertAfter(QString)", tr("к приказу №_____от______\n") );
pswds=Range->querySubObject("ParagraphFormat()"); cheackErr(pswds, "pswds"); pswds->dynamicCall("SetAlignment(WdParagraphAlignment)" ,1) ; . выравнивает все.. а надо только текст последующий. Range->querySubObject("InsertAfter(QString)", tr("\nРассказ\n") ); Range->querySubObject("InsertAfter(QString)", tr("Бобры всегда добры\n") ); Range->querySubObject("InsertAfter(QString)", tr("Если ты добр\n") ); Range->querySubObject("InsertAfter(QString)", tr("Значит в душе ты бобр\n") ); Range->querySubObject("InsertAfter(QString)", tr("Товарищи бобры\n") );
pswds=celR->querySubObject("ParagraphFormat()"); // приходится добавлять эти две строчки так как правая верхняя ячейка выравнивается со всем текстом pswds->dynamicCall("SetAlignment(WdParagraphAlignment)" ,0) ;
NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", ActiveDocument->dynamicCall("Range()"), 5, 3, 1, 2); // и тут все удаляется и добавляется таблица с нуля.
void cheackErr(QAxObject* o, QString s) { s+=" не взялся"; if (!o) QMessageBox::information(0,"",s); }
Вызывал generateDocumentation но не смог найти нужное. Заранее спасибо!
|