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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: OpenOffice + Qt + ActiveX  (Прочитано 6717 раз)
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« : Октябрь 10, 2012, 10:20 »

Доброго времени суток!

Стоит задача открыть файл в OpenOffice в скрытом режиме, не как не пойму, как это сделать в связке с ActiveQt.
Собственно такой вот код:

Код
C++ (Qt)
   QObject obj;
 
   QAxObject *OO = new QAxObject("com.sun.star.ServiceManager", &obj);
 
   if (!OO)
       return false;
   QAxObject *OO_Desktop=OO->querySubObject("createInstance(string)","com.sun.star.frame.Desktop");
   if (!OO_Desktop)
       return false;
   // берём структуру com.sun.star.beans.PropertyValue
   QAxObject *propValue = OO->querySubObject("Bridge_GetStruct(string)", "com.sun.star.beans.PropertyValue");
   QVariantList vl;
   if (propValue){
       qDebug() << "yep! Struct is created!!";
       // если всё хорошо - записываем туда пару "Hidden" - true
       propValue->setProperty("name", "Hidden");
       propValue->setProperty("value", true);
       // и в список ее
       vl << propValue->asVariant();
   }
 
   // пытаемся загрузить документ. Он грузиться, никаких исключений
   // не выдает, но окно writer'а показывает.
   QAxObject *OO_Doc = OO_Desktop->querySubObject("LoadComponentFromURL(string, string, long, sequence)",ConvertToURL(templateFile), "_blank", 0, vl);
   if (!OO_Doc)
       return;

писал по аналогии с этим:

Код
C++ (Qt)
      OpenParams = VarArrayCreate(Bounds, 1, varVariant);
      Variant MyStruct = vApp.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
      MyStruct.OlePropertySet("name","Hidden");
      MyStruct.OlePropertySet("value",true);
      OpenParams.PutElement(MyStruct, 0);
      Document = Desktop.OleFunction("LoadComponentFromURL", convertToURL(FileName), "_blank", 0, OpenParams );
Ткните, куда копать?
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Октябрь 12, 2012, 17:39 »

Так как не удалось нормально подружить QtActive с COM бриджем OpenOffice'а, заюзал сторонюю библиотечку DispHelper, и с помощью него и не без матов написал небольшой помошник автоматизации работы с OO Writer'ом. Делюсь, может кому пригодится.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
PavelVX
Гость
« Ответ #2 : Июль 31, 2013, 09:04 »

Не хотелось бы заниматься некрофилией, но кто-нить решил проблему ТС???
Платформа: только win, хочу все сделать через ActiveQt.
По связке Qt + MS office куча инфы, а тут полный голяк.
И еще, может кто-нить подсказать: как устанавливать свойства??
Column->setProperty("Width", width) - не меняет ширину колонки.

Или подскажите: что бы понять, что и как менять, можно записать макрос.
Как команды макроса подпихнуть ActiveQt??
« Последнее редактирование: Июль 31, 2013, 09:20 от PavelVX » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #3 : Июль 31, 2013, 10:16 »

Попробуй поискать по фразе "1С OpenOffice".
Там больше инфы.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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