是否有免费或开源的库可以直接从c#程序中读取Excel文件(.xls) ?

它不需要太花哨,只需选择一个工作表并将数据作为字符串读取即可。到目前为止,我一直在使用Excel的Export to Unicode文本功能,并解析生成的(以制表符分隔的)文件,但我想消除手动步骤。


当前回答

不久前,我在c#中从Excel文件中读取了大量数据,我们使用了两种方法:

COM API,在这里您可以直接访问Excel的对象并通过方法和属性操作它们 允许像使用数据库一样使用Excel的ODBC驱动程序。

后一种方法要快得多:通过COM读取一个有20列和200行的大表需要30秒,通过ODBC只需半秒。所以,如果你需要的只是数据,我建议使用数据库方法。

欢呼,

Carl

其他回答

我推荐FileHelpers库,这是一个免费的,易于使用的。net库,用于从EXCEL中导入/导出数据,文件,字符串或流中的固定长度或分隔记录+更多。

Excel数据链接文档部分 http://filehelpers.sourceforge.net/example_exceldatalink.html

您可以编写一个excel电子表格,加载给定的excel电子表格并将其保存为CSV(而不是手动操作)。

然后你可以用c#自动化它。

一旦它在csv中,c#程序就可以理解它。

(此外,如果有人让你用excel编程,最好假装你不知道怎么做)

(编辑:啊,是的,rob和Ryan都是对的)

SpreadsheetGear非常棒。是的,这是一笔费用,但与其他解决方案相比,这是值得的。它快速,可靠,非常全面,我不得不说,在我的全职软件工作中使用这个产品超过一年半之后,他们的客户支持非常棒!

如果在同一个工作表中有多个表,可以给每个表一个对象名称,并使用OleDb方法读取表,如下所示:http://vbktech.wordpress.com/2011/05/10/c-net-reading-and-writing-to-multiple-tables-in-the-same-microsoft-excel-worksheet/

Excel数据阅读器怎么样?

http://exceldatareader.codeplex.com/

我在生产环境中使用了anger,将大量数据从各种Excel文件中提取到SQL Server Compact中。它工作得非常好,而且相当健壮。