如何使用.NET读取Excel文件(.xls)的二进制数据?

不,ADO.NET不会解决我的问题,因为我正在使用的Excel文件不包含表格forms的信息。 换句话说,没有什么可查询的,表格的名称和页数会有所不同。

本质上,我的工作是在Excel文档中search每个单元格,并根据其他数据进行validation。

现在我所拥有的是一个表示.xls文件内容的byte []数组。 转换为string是没有意义的,因为它只是二进制数据。

如果我使用COM互操作并在后台运行Excel,是否有可能以二进制数据以byte []数组forms注入它,还是必须将文件保存到磁盘,然后自动执行打开它并扫描每一行的过程?

有没有更简单的方法来做到这一点?

如何使用.NET读取excel文件(.xls)的二进制数据
有很多种方法,excel文件格式已经改变了几次,所以本地读取文件是困难的工作和版本依赖,通常不build议。 为了阅读表格数据,大多数人selectADO.NET,但是正如你所暗示的,如果你需要任何格式或发现,那么MS会推荐COM Interop。

如果我使用COM互操作并在后台运行Excel,是否有可能以byte []数组forms注入二进制数据

excel COM对象模型确实允许你将数据批量设置为一个Range对象,你可以用一个二维对象数组(object [,])来设置它

或者我必须将文件保存到磁盘,然后自动打开它并扫描每一行?

不,您可以与“out of process”COM服务器(Excel)进行交互,而无需先保存,您可以在内存中设置数据,格式化等。

有没有更简单的方法来做到这一点?
是的,结帐Spreadsheet Gear的对象模型与com模型几乎完全相同,但是您完全不需要使用Excel,而且使用大数据的速度也快了一个数量级。 它不便宜(上次我花了1000美元),但是在编码方面会比你节省更多。 (我不以任何方式附属于电子表格设备)

你可以使用NPOI来打开和阅读你的XLS文件,你基本上会想通过你的Sheets / Rows / Columns寻找数据。 我通常使用NPOI在整个工作表中读取和写入包含随机单元格数据的XLS表单。