Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.03.04;
Скачать: CL | DM;

Вниз

Запись в таблицу OpenOffice   Найти похожие ветки 

 
O.O   (2010-09-22 10:48) [0]

Возникла необходимость создавать из программы таблицу OpenOffice. Воспользовался рекомендациями
http://rsdn.ru/article/openoffice/ooautomation.xml


...
 public
   { Public declarations }
   StarOffice:  Variant;
   OO_Document: Variant;
   OO_Sheets:   Variant;
   OO_Sheet0:   Variant;
   OO_Sheet1:   Variant;
 end;
...

function TForm1.Connect: boolean;
begin
  if VarIsEmpty(StarOffice) then
     StarOffice := CreateOleObject("com.sun.star.ServiceManager");
  Result := not (VarIsEmpty(StarOffice) or VarIsNull(StarOffice));
end;

function TForm1.CreateDocument: boolean;
var
  StarDesktop: Variant;
begin
  StarDesktop := StarOffice.createInstance("com.sun.star.frame.Desktop");
  OO_Document := StarDesktop.LoadComponentFromURL(
                 "private:factory/scalc", "_blank", 0,
                 VarArrayCreate([0, -1], varVariant));
  Result := not (VarIsEmpty(OO_Document) or VarIsNull(OO_Document));
end;


создаю новую таблицу:


procedure TForm1.btnCreateClick(Sender: TObject);
begin
if Connect then begin
  if CreateDocument then begin
    OO_Sheets := OO_Document.OleFunction("getSheets");



вышестоящая строчка выдаёт ошибку "Metod "OleFunction" not supported by automation object"
дальнейший код естественно не выполняется, при этом сама пустая таблица открывается.


    OO_Sheet0 := OO_Sheets.OleFunction("getByIndex", 0);
    OO_Sheet1 := OO_Sheets.OleFunction("getByIndex", 1);
  end else begin
    ....
  end;
end else begin
  ...
end;


Собственно вопрос:
в примере использовалась версия OpenOffice.org 1.1.2, я использую последнюю версию OpenOffice.org 3.2.1

В новой версии OO присутствует иной метод для доступа к ячейкам таблицы или я где-то ошибаюсь ?


 
Плохиш ©   (2010-09-22 10:57) [1]


> Возникла необходимость создавать из программы таблицу OpenOffice.
>  Воспользовался рекомендациями
> http://rsdn.ru/article/openoffice/ooautomation.xml
>
>

там имеется ссылка на sdk, где можно найти и скачать sdk для нового опенофиса.


 
O.O   (2010-09-22 12:24) [2]

По ссылке ничего не нашёл. Попробовал методом "ТЫКА", получилось :)

Вместо

 OO_Sheets := OO_Document.OleFunction("getSheets");
 OO_Sheet0 := OO_Sheets.OleFunction("getByIndex", 0);
 OO_Sheet1 := OO_Sheets.OleFunction("getByIndex", 1);

написал

 OO_Sheets := OO_Document.GetSheets;
 OO_Sheet0 := OO_Sheets.GetByIndex(0);
 OO_Sheet1 := OO_Sheets.GetByIndex(1);


А с методом
Cell = Sheet.OleFunction("getCellByName","A1");
фокус с заменой на
Cell = Sheet.GetCellByName("A1");
не проходит, хотя конструкция
Cell = Sheet.GetCellByPosition(0, 0);
работает.


 
O.O   (2010-09-22 12:53) [3]

и GetCellRangeByName тоже не работает :(

Бум искать


 
O.O   (2010-09-22 13:11) [4]

А здесь написано что вроде как должно быть:
http://api.openoffice.org/docs/common/ref/com/sun/star/table/XCellRange.html


 
O.O   (2010-10-21 06:06) [5]

Ответы на все вопросы по поводу работы с OpenOffice нашлись здесь:

http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=405083&pg=1&hl=variant+not+reference+automation+object



Страницы: 1 вся ветка

Текущий архив: 2012.03.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
3-1272050895
штуша-кутуша
2010-04-23 23:28
2012.03.04
Имеет ли смысл размещать таблицы базы данных в разных файлах?


15-1320963066
Wadimkas
2011-11-11 02:11
2012.03.04
Кто какими компонентами пользуется для


15-1321426745
depper
2011-11-16 10:59
2012.03.04
ZEOSLib for PostgreSQL 9.1.1


15-1320957003
Юрий
2011-11-11 00:30
2012.03.04
С днем рождения ! 11 ноября 2011 пятница


4-1254901304
Delins
2009-10-07 11:41
2012.03.04
Серийный номер Диска (не Тома)