【问题标题】:Reading Excel Sheet with OleDb使用 OleDb 读取 Excel 工作表
【发布时间】:2013-08-08 21:48:08
【问题描述】:

我正在尝试通过 Microsoft.Jet.OLEDB.4.0 读取 Excel 表。我按照教程编写代码并部署它。它工作正常,但现在经过很长时间我们更改了服务器,现在当我将旧代码部署到新服务器时,它给了我一个错误“'Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册。”

我真的不记得上次我做了什么让它运行。我尝试了很多东西,但没有任何效果。

我不能使用任何其他 dll,因为我们没有在服务器上安装 office。哪位大神可以指导一下。

【问题讨论】:

    标签: c# excel oledb


    【解决方案1】:

    “Microsoft.Jet.OLEDB.4.0”是 32 位驱动程序。如果您使用 AnyCPU 作为平台目标编译应用程序并将应用程序部署在 64 位操作系统上,那么您的代码将作为 64 位代码执行。在这种情况下,您无法引用像 OleDb.4.0 这样的 32 位驱动程序。

    您最好的选择是将您的应用程序重新编译为 x86 作为目标平台,然后您的应用程序将作为 32 位代码运行,该代码将在 64 位系统上毫无问题地运行,您将能够使用 32 位 OleDb.4.0。

    如果这不可行,那么您应该下载 64 位版本的 Microsoft Access Database Engine 2010 Redistributable 并将其安装在目标服务器上。还要记住将连接字符串更改为

     string conString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
                        "Data Source=path_to_your_excel_file.xls;" + 
                        "Extended Properties=\"Excel 8.0;HDR=YES\"";
    

    【讨论】:

    • Steve 感谢您的回复,我刚刚安装了 Microsoft Access Database Engine 2010 Redistributable。当我再次运行网络时,我收到此错误“找不到可安装的 ISAM。”
    • 问题是我无法编译应用程序,因为我只托管了源代码文件,没有 dll。
    • 在扩展属性周围加双引号?
    • 刚刚添加了一条新消息 :) “初始化字符串的格式不符合从索引 119 开始的规范”
    • 为了更好地理解这里是我的代码字符串 oleConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ newFilePath +";Extended Properties\"Excel 8.0;HDR=Yes;IMEX =2\"";
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多