2010-10-11 111 views
0

您好,有人可以幫我解決以下問題,我嘗試使用OOoTools.pas界面創建一個OpenOffice calc圖表。該代碼是這樣的:OpenOffice自動化在Calc中使用Delphi創建圖表

/////////////////////////////// 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

addNewByName的aRanges參數需要一個com.sun.star.table.CellRangeAddress的序列,並且您沒有給出CellRangeAddress結構序列,而是結構本身。

試試這個:

oCharts.addNewByName('LogData', 
         oRectangle, 
         VarArrayOf(oCellRangeAddress), 
         true, 
         true); 
+0

工程就像一個魅力,非常感謝你! – addelichtman 2010-10-11 09:53:42