在C#中轻松读取Excel?

我已经尝试了OleDb驱动程序, LinqToExcel和Excel数据读取器读取.xls文件,但它们都似乎有非常恼人的限制。 如果Excel文件有幻像列,则LinqToExcel和OleDb驱动程序都会抛出“Too Many Fields Defined”错误消息。 Excel数据读取器抛出未定义的例外,这是我从来没有得到的底部。

是否有任何“只是工作”的Excel驱动程序,可以处理稍微格式不正确的Excel文件?

一个商业软件包会没事的。 我目前的要求只规定阅读date和单元格的文本,但更复杂的function将是一个加号。

[编辑]

需要同时支持XLS和XLSX文件格式。

我可以推荐Aspose.Cells和Flexcel …没有尝试SpreadsheetGear,但听到很多关于它的好东西…

一个免费的选项(尽pipe只有更新的xlsx格式!)是来自MS的OpenXML 2 。

试用Excel的Epplus开源库

即使我还没有尝试, 这个项目似乎感兴趣 。 它的意义尤其是写作,但它只是工作,甚至阅读。 不幸的是,它接受新的xslx格式。

我以前使用过SpreadSheetGear。 你必须支付,但它为我的需要很好地工作,并处理好不同的文件格式。

我testing了一些其他库,但SSG在保存文件的保真度方面效果最好,当我保存它的副本,但是然后我的文件有大量的数据validation和控制到位等。对于更简单的文件有一系列的其他选项。

如果一切都失败了,你可以编写一个Excelmacros,如果需要,从C#中调用macros。 我不知道你是否需要这个,因为你没有给出任何理由,你为什么在C#

数据的另一种方式是使用一个互操作程序集,自从dynamic关键字到达C#4以后,它变得更容易了