2012-02-02 70 views

回答

5

如果你不想使用庫,那麼你將不得不下載Excel file format specs from MS並自己編寫一個Excel解析器(這對於一個開發者來說非常複雜並且需要10年以上的時間)。對於OpenXML格式規範,請參閱herehere

因此我真的建議使用該庫...

嘗試Apache POI - 一個免費的Java庫,用於處理MS Office文檔..

+0

我不想將庫添加到我的項目中。 – Ofer 2012-02-02 07:20:57

+3

@OferTaviv如果你不想添加一個庫,那麼你將不得不從MS下載Excel文件格式規範,並自己編寫一個Excel解析器(這非常複雜,一個開發人員需要10年以上的時間)。 – Yahia 2012-02-02 07:22:28

+4

對不起,但這只是一個愚蠢的想法。要閱讀Excel文件格式,您必須編寫大量複雜的代碼。如果你真的不想使用外部庫,你絕對應該考慮使用不同的格式,如CSV。試圖閱讀XLS而不使用任何現有的庫,就像開始通過購買橡膠種植園來製造汽車一樣,以便能夠生產自己的輪胎... – Axel 2012-02-02 09:21:16

0

您可以保存爲Excel文件*將該.cvs和拼寫「;」。然後,您可以逐行讀取文件並獲取每個令牌獲取的列。

+0

我知道了,但是從excel到csv的轉換不支持utf-8 – Ofer 2012-02-02 07:20:28

0

微軟excel使用二進制的方式來保存它的數據,所以手動讀取excel文件可能是一件麻煩事。如果您可以將excel(xls)轉換爲逗號分隔值(csv)文件,那麼您只需讀取該文件並在逗號分隔輸入即可。

+0

我知道,但是從excel到csv的轉換不支持utf-8 – Ofer 2012-02-02 07:21:30

-1

這是一個難題。首先,它不像「添加第三方庫」那麼簡單。沒有現成的EXCEL閱讀庫不需要花費金錢,我知道那個工作的閱讀庫非常昂貴並且存在缺陷。

一種策略是創建一個Excel添加,讀取數據並通過OLE或剪貼板或TCP/IP端口將其傳輸到您的應用程序或將其保存到臨時文件。如果您查看OPeNDAP.org的ODC項目的源代碼,您可以找到一個Excel添加和TCP功能來執行此操作。

您可以嘗試引用OpenOffice中的開源代碼,但在我看來,由於各種原因,代碼不容易重構爲私有項目。

Microsoft擁有用於打開Excel文件並通過COM對象公開它們的組件和工具。

您還可以學習BIFF格式並編寫自己的解析器。你可能會想爲BIFF5編寫一個解析器,但是要事先警告,這是一個BIG項目,即使你只解析有限數量的數據類型。

+1

也許我不明白第一段,但是有本網站上提及的至少2個可以讀取/寫入聲稱可以正常工作的Excel文件的開源示例。 – Tshepang 2012-03-26 11:57:46