2012-02-02 79 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