OpenOffice Automation создает диаграмму в calc с использованием Delphi - PullRequest
0 голосов
/ 11 октября 2010

Здравствуйте, может кто-нибудь, пожалуйста, помогите мне со следующим, я пытаюсь создать диаграмму калькуляции OpenOffice, используя интерфейс OOoTools.pas.Код такой:

/////////////////////////////// CODE //////////////////////////////////

procedure TForm1.ProcessChart(aFilename : String);
Var
                  oTheFile, oAllSheets, oMySheet, oCharts,
                  oCellRangeAddress, oRectangle, oSize : Variant;
begin
 ConnectOpenOffice;
   oTheFile := OpenSheet(aFilename, True);
   oAllSheets:= oTheFile.Sheets;

   oMySheet:= oAllSheets.getByIndex(0);  // first sheet of the spreadsheet

   oCharts := oMySheet.getCharts;

   oCellRangeAddress := oTheFile.Bridge_getStruct('com.sun.star.table.CellRangeAddress');
   oCellRangeAddress.Sheet       := 0;// '1ere feuille du graphique
   oCellRangeAddress.StartColumn := 0;// 'Ligne 1
   oCellRangeAddress.StartRow    := 0;// 'Colonne A
   oCellRangeAddress.EndColumn   := 3;// 'Colonne D
   oCellRangeAddress.EndRow      := 29;// 'Ligne 30

   oRectangle := oTheFile.Bridge_GetStruct('com.sun.star.awt.Rectangle');
   oRectangle := oMySheet.Bridge_GetStruct('com.sun.star.awt.Rectangle');
   oRectangle.X      := 8000;
   oRectangle.Y      := 1000;
   oRectangle.Width  := 5000;
   oRectangle.Height := 5000;

   // Type Error Mismatch error on this call:       
   oCharts.addNewByName('LogData',
                        oRectangle,
                        oCellRangeAddress,
                        true,
                        true);

 DisconnectOpenOffice;
End;

/////////////////////////////// END CODE //////////////////////////////////

В вызове oCharts.addNewByName я получаю ошибку "Несоответствие типов" и не имею никакой дополнительной информации о том, что может быть не так.Или я должен использовать другой подход?Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 11 октября 2010

Параметр aRanges addNewByName ожидает последовательность com.sun.star.table.CellRangeAddress, и вы задаете не последовательность структур CellRangeAddress, а саму структуру.

Попробуйте это:

oCharts.addNewByName('LogData',
                        oRectangle,
                        VarArrayOf(oCellRangeAddress),
                        true,
                        true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...