【发布时间】:2023-03-19 22:23:01
【问题描述】:
我正在编写一个 C# 库来读取 Excel 文件(xls 和 xlsx),但遇到了一个问题。
与this question 中表达的内容完全相同,如果我的 Excel 文件有一个包含字符串值的列,但第一行有一个数值,则 OLEDB 提供程序假定该列是数字并返回 @987654324 @ 表示该列中的非数字值。
我知道,作为in the answer provided,我可以在注册表中进行更改,但由于这是一个我计划在许多机器上使用的库并且不想更改每个用户的注册表值,所以我想知道如果有更好的解决方案。
可能是 ACE.OLEDB 以外的数据库提供程序(似乎 JET 不再得到足够好的支持而无法考虑)?
另外,由于这需要在 XLS / XLSX 上工作,EPPlus / XML 阅读器等选项不适用于 xls 版本。
【问题讨论】:
-
我目前解决这个问题的方法是使用 Excel COM 接口和一些 C#,在 Excel 中打开文件并将其重新保存为
.csv文件。我还有一个宏,它已加载并运行以整理内容,但这种方式删除了所有格式并允许更轻松地导入。 -
谢谢,@AeroX,我正在考虑这个问题,但如果可能的话,我会尽量避免使用 Interop,因为这会打开其他几十个蠕虫罐 :) ...我希望其他人有另一种解决方案,但非常感谢您分享您的方法!
-
改用 OpenXml Sdk。
-
@andrei.ciprian,有问题只在 xlsx 上工作,而不是 xls,不是吗?
标签: c# excel oledb import-from-excel