Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

23 Октябрь 2018, 06:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Программирование OpenOffice  (Прочитано 1246 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SBorshenko
Новичок
*
Offline Offline

Сообщений: 2


« Стартовое сообщение: 15 Июнь 2016, 11:09 »

Добрый день!
Программирую на 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
Не могу разобраться, о каком несоответсвии типов идет речь? Что у меня не так?
« Последнее редактирование: 15 Июнь 2016, 16:20 от bormant » Записан
SBorshenko
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #1: 15 Июнь 2016, 13:43 »

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

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!