在 x64 系统上的 .NET 中打开 Excel 电子表格

Posted

技术标签:

【中文标题】在 x64 系统上的 .NET 中打开 Excel 电子表格【英文标题】:Opening an Excel spread sheet in .NET on a x64 system 【发布时间】:2009-06-30 15:15:29 【问题描述】:

我无法使用以下连接字符串在 x64 服务器上使用 .NET 打开 Excel 电子表格

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + filePath + "; Extended Properties=Excel 8.0;"

我收到“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。

我安装了 2007 Office System 驱动程序:数据连接组件并尝试使用 Microsoft.ACE.OLEDB.12.0 和此连接字符串

"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + filePath + "; Extended Properties=Excel 8.0;"

并得到“'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。”

我搜索了谷歌,唯一的反应是这是一个 64 位的问题,有人知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

您的应用程序需要设置为作为 32 位应用程序运行。这可以通过在 Visual Studio 配置管理器中将可执行项目的目标平台从 AnyCPU 更改为 x86 来实现。

如果您想在更改解决方案配置之前测试这将如何与您的应用程序一起工作,您可以使用 corflags.exe 实用程序。这仅适用于您的应用程序没有强命名或 Authenticode 签名,否则您需要将其辞职。从 Visual Studio 命令提示符类型:

corflags.exe <path and exe file name> /32BIT+

【讨论】:

【参考方案2】:

Excel 2003 / 2007 OleDB 驱动程序只有 32 位。我的理解是您只能在 32 位应用程序中使用它们。

SpreadsheetGear for .NET 将打开 xls 和 xlsx 工作簿,它在 64 位和 32 位 .NET 2.0+ 中经过测试和支持。

您可以下载评估版here 并查看实时 ASP.NET 示例(C# 和 VB)here。

免责声明:我拥有 SpreadsheetGear LLC

【讨论】:

以上是关于在 x64 系统上的 .NET 中打开 Excel 电子表格的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .net 中对 MemoryMappedFiles 使用 x64 互锁操作

.NET 4.0 NGEN x64 程序集上的符号解析不起作用

从 SQL asp.net 页面导出数据到 excel 会截断 < 字符上的数据

VB.NET 动态 API 调用 x64

在 excel 中手动添加行,最后使用 C#.net 更新到表中

win10 x64 手动注册ocx控件的方法