crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

vitalka
  опции профиля:
сообщение 17.3.2011, 7:46
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 24.1.2011
Пользователь №: 2360

Спасибо сказали: 0 раз(а)




Репутация:   0  


Мне необходимо вывести данные в документ MS WORD.
Делаю так:
QAxObject* WordApplication=new QAxObject("Word.Application"); // Создаю интерфейс к MSWord
 QAxObject* WordDocuments = WordApplication->querySubObject( "Documents()" );
 QAxObject* NewDocument = WordDocuments->querySubObject( "Add()" ); // Создаю новый документ
 WordApplication->setProperty("Visible", true); // Делаем Word видимым

 QAxObject* ActiveDocument = WordApplication->querySubObject("ActiveDocument()");
 QAxObject* Range = ActiveDocument->querySubObject("Range()");


Дальше используя
Range->querySubObject("InsertAfter(Text)","текст");
вывожу текст.
Но когда делаю
QAxObject* Tables = ActiveDocument->querySubObject("Tables()");
QAxObject* NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", ActiveDocument->dynamicCall("Range()"), 10, 10, 1, 1);

предыдущий текст удаляется

Как изменить Range что бы таблицы и данные добавлялись в конец?

Пробовал использовать selection, но при его использовании программа подвисает, на первом же его вызове, после создания объекта. Может кто знает как с selection правильно работать?
Перерыл уже кучу форумов и ничего толком не нашел...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 5)
vitalka
  опции профиля:
сообщение 18.3.2011, 7:20
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 24.1.2011
Пользователь №: 2360

Спасибо сказали: 0 раз(а)




Репутация:   0  


Почему Selection не работает понял. ActiveDocument->querySubObject("Selection()"); ноль возвращает всегда.

Может кто знает где список функций можно достать? Нигде найти не могу...
Пробовал использовать функции по типу макросов Word, но они тоже не работают.....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей
  опции профиля:
сообщение 20.3.2011, 12:39
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 29.8.2010
Пользователь №: 1988

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(vitalka @ 17.3.2011, 9:46) *
Дальше используя
Range->querySubObject("InsertAfter(Text)","текст");
вывожу текст.
QAxObject* NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", ActiveDocument->dynamicCall("Range()"), 10, 10, 1, 1);

Должно быть так:
querySubObject("InsertAfter(QString)","текст")

и в функции add также типы вместо имён переменных

Цитата(vitalka @ 18.3.2011, 9:20) *
Почему Selection не работает понял. ActiveDocument->querySubObject("Selection()"); ноль возвращает всегда.

Может кто знает где список функций можно достать? Нигде найти не могу...
Пробовал использовать функции по типу макросов Word, но они тоже не работают.....


Чтоб достать список функций из ActiveDocument или другого объекта используй пример из документации qt
    QFile outfile("список функций.html");
    QTextStream out( &outfile );
    outfile.open( QIODevice::WriteOnly );
    QString docu = ActiveDocument->generateDocumentation();
    out << docu;
    outfile.close();


Ещё почитай здесь: Работа с MS Office с помощью ActiveQt

Сообщение отредактировал Алексей - 20.3.2011, 12:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vitalka
  опции профиля:
сообщение 21.3.2011, 6:39
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 24.1.2011
Пользователь №: 2360

Спасибо сказали: 0 раз(а)




Репутация:   0  


Насчет типов...такие примеры в инете нашел и самое странное что работают.
За функции спасибо, однако это функции QAxObject, а меня больше интересуют команды, которые можно в querySubObject и dynamicCall передавать.
Про работу в Qt с MS Office читал, там только Excel описан, а в нем с областями как раз проблем нет, там все в ячейках, а у меня как раз сложности в том как работать с областями в Word, не закидывать же все в таблицу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 22.3.2011, 17:43
Сообщение #5





Гости








    


http://msdn.microsoft.com/en-us/library/aa...fice.10%29.aspx
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Zl0bin_*
сообщение 3.10.2011, 13:17
Сообщение #6





Гости








    


Вот код как вывести текст и таблицу в word одновременно:

QaxObject *selection = word->querySubObject("Selection()");
selection->dynamicCall("TypeParagraph()");
selection->dynamicCall("TypeText(const QString&)","text");
selection->dynamicCall("TypeParagraph()");
QaxObject *range = selection->querySubObject("Range()");
QaxObject *tables = document->querySubObject("Tables()");
QaxObject *table = tables->querySubObject("Add(Range,NumRows,NumColumns)",range->asVariant(),3,4);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.6.2025, 12:43