2011-04-20 82 views
3

我使用的是Delphi 7,我想使用自動化將我的程序中的列表內容導出到OpenOffice Calc,而不是使用文件。從Delphi導出一個列表到OpenOffice Calc

該任務很簡單:創建新文檔,遍歷行/列並更改單元格數據。

我發現了一些代碼,但它並不完整,我希望有人有一些示例代碼可以完成這個非常簡單的任務。它可以爲我節省幾個小時的嘗試。

在此先感謝!


編輯:我想自動化OpenOffice Calc來實現我上面寫的。謝謝!

+0

OpenOffice Calc支持以多種格式(HTML,製表符分隔,CSV等)導入數據。你的問題到底是什麼 - 如何從Delphi創建導入數據文件,或者如何將這些數據導入到Calc中,或者如何自動運行Calc並以編程方式創建電子表格? – 2011-04-20 17:07:55

+0

如何自動化Calc並以編程方式創建spreasheet – Steve 2011-04-20 17:31:29

+0

@steve問題的關鍵在於您沒有告訴我們您想要什麼。 – 2011-04-20 18:40:26

回答

2

最簡單的解決方案是編寫CSV文件輸出,然後在OpenOffice中打開它。

還有一些庫可以編寫OpenOffice Calc和Excel可以讀取的.XLS文件。 CSV非常簡單,我想知道你需要一個例子。創建一個TStringList,並以逗號分隔的格式添加字符串。保存到文件。

所謂的「編程」方法涉及OLE自動化。

uses 
    OleAuto; 

var 
mgr,calc,sheets,sheet1,dt,args:Variant; 
begin 
    args = VarArrayCreate(...);  
    mgr := CreateOleObject('com.sun.star.ServiceManager'); 
    dt := mgr.createInstance('com.sun.star.frame.Desktop') 
    calc = dt.loadComponentFromURL('private:factory/scalc', '_blank', 0, args) 
    sheets = calc.getSheets() 
    sheet1 = sheets.getByIndex(0) 
    ... 
+0

謝謝,但我只想導出而不保存。我的程序和Excel一樣,爲了保持一致,我想和OO做同樣的事情。用戶是否保存表格 - 這是他/她的選擇。 – Steve 2011-04-20 17:30:53

+0

這是更多的工作。爲了什麼?創建一個臨時文件夾,啓動該程序,稍後刪除該臨時文件。我不知道OO支持OLE自動化,我知道如何使用MS Excel執行此操作,但不使用OOCalc。 – 2011-04-20 18:16:08