Russian Qt Forum

Qt => ActiveX => Тема начата: Kurles от Октябрь 10, 2012, 10:20



Название: OpenOffice + Qt + ActiveX
Отправлено: Kurles от Октябрь 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 );
Ткните, куда копать?


Название: Re: OpenOffice + Qt + ActiveX
Отправлено: Kurles от Октябрь 12, 2012, 17:39
Так как не удалось нормально подружить QtActive с COM бриджем OpenOffice'а, заюзал сторонюю библиотечку DispHelper (http://disphelper.sourceforge.net/), и с помощью него и не без матов написал небольшой помошник автоматизации работы с OO Writer'ом. Делюсь, может кому пригодится.


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

Или подскажите: что бы понять, что и как менять, можно записать макрос.
Как команды макроса подпихнуть ActiveQt??


Название: Re: OpenOffice + Qt + ActiveX
Отправлено: panAlexey от Июль 31, 2013, 10:16
Попробуй поискать по фразе "1С OpenOffice".
Там больше инфы.