我已经尝试过OleDb驱动程序LinqToExcel和Excel Data Reader来读取.xls文件,但所有这些文件似乎都有非常烦人的限制。如果excel文件具有phantom columns,LinqToExcel和OleDb驱动程序都会抛出“Too Many Fields Defined”错误消息。 Excel Data Reader抛出了未定义的异常,我无法将其置于底层。
是否有任何excel驱动程序“正常工作”,并且可以处理格式错误格式化的Excel文件?
商业软件包没问题。我目前的要求仅指定从单元格中读取日期和文本,但更复杂的功能将是一个加号。
[编辑]
需要支持XLS和XLSX文件格式。
答案 0 :(得分:2)
我可以推荐Aspose.Cells和Flexcel ...没试过SpreadsheetGear但是听到+读了很多关于它的好东西......
免费选项(仅适用于较新的xlsx格式!)为OpenXML 2 from MS。
答案 1 :(得分:1)
试用Epplus excel的开源库
答案 2 :(得分:0)
即使我还没试过,this project seems interestin g。它特别适合写作,但它甚至可以用于阅读。不幸的是,它接受了新的xlsx格式。
答案 3 :(得分:0)
我之前使用过SpreadSheetGear。你需要付费,但它能很好地满足我的需求,并能很好地处理不同的文件格式。
我测试了一些其他的库,但是当我保存文件的副本时,SSG在保持文件保真度方面效果最好但是我的文件有很多数据验证和控件等等。对于更简单的文件,还有一系列其他文件选项。
答案 4 :(得分:0)
如果所有其他方法都失败了,您可以编写Excel宏,如果需要,可以在C#中调用宏。我不确定你是否需要它,因为你没有说明为什么你在C#
这样做进入数据的另一种方法是使用互操作程序集,因为动态关键字到达C#4后变得更加容易