Программирование OpenOffice

Автор SBorshenko, 15 июня 2016, 11:09

0 Пользователи и 1 гость просматривают эту тему.

SBorshenko

Добрый день!
Программирую на Visual Foxpro.
Программа должна выводить отчет в OpenOffice Writer.
В отчете присутствует таблица. Для ее создания использую код:

oOfcMgr = CreateObject("com.sun.star.ServiceManager")
IF TYPE('oOfcMgr') = 'O'
 oDispatcher = oOfcMgr.createInstance("com.sun.star.frame.DispatchHelper")
 oDesktop = oOfcMgr.createInstance("com.sun.star.frame.Desktop")
 oServiceManager = CREATEOBJECT( "com.sun.star.ServiceManager" )
 DIMENSION args1[1]
 args1[1] = oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
 args1[1].Name="Hidden"
 args1[1].Value=.F.
 COMARRAY(oDesktop,10)
 oDocument = oDesktop.LoadComponentFromURL("private:factory/swriter","_blank",0,@args1)
 IF TYPE('oDocument') = 'O'
   DIMENSION args2(4)
   args2[1] = oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
   args2[1].Name="TableName"
   args2[1].Value="Table1"

   args2[2] = oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
   args2[2].Name="Columns"
   args2[2].Value=3

   args2[3] = oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
   args2[3].Name="Rows"
   args2[3].Value=2

   args2[4] = oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
   args2[4].Name="Flags"
   args2[4].Value=9
   
   oDispatcher.executeDispatch(oDocument, ".uno:InsertTable", "", 0, @args2)
 ENDIF
ENDIF

На последней команде выдает ошибку: Type mismatch
Не могу разобраться, о каком несоответсвии типов идет речь? Что у меня не так?

SBorshenko

Проблему решил.
Первый параметр должен быть oFrame, где
oFrame = oDocument.getCurrentController().getFrame()
т.е.
oDispatcher.executeDispatch(oFrame, ".uno:InsertTable", "", 0, @args2)
и все заработало.