2009-07-02 247 views
3

有沒有人使用基於Java的庫來生成Excel文檔?最好支持2003?以編程方式生成Excel文檔

+0

「文件」是什麼意思?一些看起來像報告或只是一個電子表格中的數字? – pjp 2009-07-02 14:29:41

+0

生成電子表格:) – predhme 2009-07-02 15:19:39

回答

6

我目前正在使用Apache POI,(http://poi.apache.org/index.html),它非常全面。 2003年的文件格式版本仍處於測試階段,但似乎運行良好。我並不是在運用它的力量,只是簡單地讀寫Excel,但它似乎是可靠的。

6

每當我必須這樣做,我問自己,如果一個大的HTML表就足夠了。

大部分時間都是這樣。您可以簡單地編寫html標籤並將其標記爲.xls文件。 Excel將打開它正確

+0

+1 :-)哇很好玩的技巧 – Blauohr 2009-07-02 14:27:54

1

JExcelApi

我親自用它爲一個報告,目前正在生產。這是一個相當不錯的圖書館,擁有足夠的文檔,而且是開源的。

它工作得很好,但有幾個問題你應該知道。他們中沒有一個是破產者,只是決定如何做一些事情。請務必閱讀FAQ。它會解釋它們並告訴你如何避免它們。

1

格式化的HTML表格將正確導入,但最好使用Excel 2003 XML Toolbox中的Excel XML格式以滿足更高級的需求(多個工作表,公式等)。

+0

正如一個簡單的HTML表格中保存爲.xls的旁註公式一樣工作正常。每當需要更復雜的事情時,可以在Excel中設計一個「模板」工作簿,保存爲XML,然後將該XML重命名爲.xls(Excel處理該文件就好),然後使用該XML文件作爲插入缺失信息的模板。 http://poi.apache.org/也可以正常工作。 – 2009-07-02 14:26:44

+0

正如前面提到的另一個答案,用戶每天生成數百個報告,並將每個報告導入到excel中會浪費大量時間。需要直接爲用戶生成文件。 – predhme 2009-07-02 15:17:14

2

如果您不需要花哨的標題,那麼只需輸出CSV

1

Jacob作爲一般的Java和COM解決方案做到這一點。然而在我看來,雅各布並沒有很好地處理多次呼叫(比如說數百萬次呼叫),我需要修補一下。這些補丁不被Jacob維護者接受。

無論如何,雅各布是開源(LGPL),補丁後我有一個生產環境運行了多年。

使用COM連接到Excel後,使用標準Excel API處理文檔。首先嚐試它如何與VBS(VBScript Language Reference)協同工作,然後用java實現。

0

您可以生成一個VBS的Excel文件,然後CAL腳本從Java這樣的:

String script = "your_VBS_Name.vbs" 
String cmd = "D:\\YourPath" + script; 
Runtime.getRuntime().exec(cmd); 

創建腳本是非常簡單的

打開記事本,然後按照下面的例子:

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 

Set objWorkbook = objExcel.Workbooks.Add() 
objWorkbook.SaveAs("D:\yourExcel.xls") 

objExcel.Quit 

然後將其保存爲your_VBS_Name.vbs

釷ats it!