c# - 使用 ADO 3.5 将数据从 Excel 导入 64 位应用程序

标签 c# excel ado.net 64-bit

我目前正在开发一个 64 位 C# 应用程序,需要从 Excel 电子表格导入数据。我听说最好的方法是使用 ADO 数据连接。然而,我读到(并且经历过),为了完成这项工作,我必须编写一个 32 位应用程序,因为没有适用于 64 位应用程序的 OleDb odbc 驱动程序。

问题是我无法将应用程序编译为 32 位应用程序,否则程序的其他部分(不可重写)将会崩溃。

事实上,我无法在 64 位应用程序中从 Excel 导入数据,这似乎是一个相当荒谬的问题。我该如何解决这个问题?或者如果没有,有哪些解决方法可用?

最佳答案

两种可能的解决方案:

  1. 使用Open XML SDK反而。这是 Office 2007 特有的,但它直接处理文件,不需要通过任何数据库驱动程序。这是我选择的武器,因为它比自动化更快、更少不稳定,并且可以处理更“高级”的任务,例如格式化。

  2. 编译单独的 x86 二进制文件,并根据需要从 x64 应用程序启动该进程。导入器应用程序可以使用某种形式的 IPC 提供反馈,也可以简单地将文件转换为 CSV 之类的文件,您可以在 x64 应用程序中 native 读取该文件。 (我不太喜欢这种类型的拼凑,但你做了你必须做的事......)

我同意,我们仍然没有 x64 JET 或 ACE 驱动程序,这有点荒谬,但是 that seems to be the way it is目前。即使 MSDASQL 也不适合你;有一个 64 位库,但我了解到 Excel 组件仍然只能在 32 位模式下工作。

关于c# - 使用 ADO 3.5 将数据从 Excel 导入 64 位应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2089664/

相关文章:

vba - 在图表中添加辅助轴

excel - 使用 Outlook VBA 将电子邮件复制到剪贴板

c# - Microsoft Excel 中用于注释的 OpenXML

wpf - 将生成的 ADO.Net DbContext 放入 View-Models 的最佳方法

c# - 协作环境中 Entity Framework 中的迁移

c# - 如何在 C# 中将 KeyValuePair 转换为字典

C# 抽象泛型方法调用

ado.net - SqlDataReader Close 需要 10 多秒 - 为什么?

c# - 如何循环 SQL 参数列表和 WHERE 子句?或者更有效地获得结果?

c# - String.IsNullOrEmpty(myString) 与 myString != null