不,ADO.NET无法解决我的问题,因为我正在使用的excel文件不包含表格形式的信息。换句话说,没有什么可查询的,并且纸张的名称和纸张数量会有所不同。
基本上我的工作是搜索excel文档中的每个单元格,并根据其他一些数据对其进行验证。
现在我所拥有的是一个byte []数组,它表示.xls文件的内容。转换为字符串是没有意义的,因为它只是二进制数据。
如果我使用COM互操作并在后台运行Excel,是否可以以byte []数组形式注入二进制数据,或者是否必须将文件保存到磁盘然后自动执行打开和扫描的过程每一行?
有没有更容易的方法呢?
答案 0 :(得分:2)
如何使用.NET 读取Excel文件(.xls)的二进制数据 有很多方法,excel文件格式已经改变了几次,因此本地读取文件是艰苦的工作和版本依赖,通常不建议。对于阅读表格数据,大多数人选择ADO.NET,但正如您所说,如果您需要任何格式或发现,那么MS会推荐COM Interop。
如果我使用COM互操作并在后台运行Excel,是否可以用byte []数组形式注入二进制数据
excel COM对象模型does allow you to bulk set data到Range对象,你用2维对象数组(object [,])设置它
还是我必须将文件保存到磁盘,然后自动打开它并扫描每一行?
不,您可以与“进程外”COM服务器(Excel)进行交互而无需先保存,您可以在内存中设置数据,格式化等。
有没有更简单的方法呢?
是的,checkout Spreadsheet Gear他们的对象模型几乎与com模型完全相同,但是根本不需要Excel,使用大数据也会快一个数量级。它并不便宜(我上次检查时的价格是1000美元),但会比编码工作节省更多。 (我不以任何方式隶属于电子表格装备)
答案 1 :(得分:1)
您可以使用NPOI打开&阅读您的XLS文件,您基本上想要遍历您的Sheets / Rows / Columns寻找数据。我通常使用NPOI阅读&在整个工作表中编写包含随机单元格数据的XLS表单。