1

不,ADO.NET 不会解决我的问题,因为我正在使用的 excel 文件不包含表格形式的信息。也就是说,没有什么可查询的,而且表的名称和表的数量会有所不同。

本质上,我的工作是搜索 excel 文档中的每个单元格,并根据其他一些数据对其进行验证。

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

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

没有更简单的方法吗?

4

2 回答 2

2

如何使用 .NET 读取 excel 文件 (.xls) 的二进制数据
有多种方法,excel 文件格式已更改了几次,因此本机读取文件是一项艰巨的工作,并且取决于版本,通常不推荐. 对于读取表格数据,大多数人选择 ADO.NET,但正如您所暗示的,如果您需要任何格式化或发现,那么 MS 会推荐 COM Interop。

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

excel COM 对象模型确实允许您将数据批量设置为 Range 对象,您使用 2 维对象数组 (object[,]) 设置它

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

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

没有更简单的方法吗?
是的,查看Spreadsheet Gear他们的对象模型几乎与 com 模型相同,但是您根本不需要 Excel,它处理大数据的速度也快了一个数量级。它并不便宜(我上次检查时为 1000 美元),但比编码工作节省更多。(我不以任何方式隶属于电子表格设备)

于 2012-05-18T23:41:38.957 回答
1

您可以使用NPOI打开和读取您的 XLS 文件,您基本上会想要遍历您的表格/行/列以查找数据。我通常使用 NPOI 来读取和写入 XLS 表单,这些表单包含整个工作表中随机单元格中的数据。

于 2012-05-18T23:19:29.937 回答