zoukankan      html  css  js  c++  java
  • 连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    问题与解决

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

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

     解决方案是:

    将生成类型改为x86。具体来讲就是在项目的 “属性”那里, 目标平台由原有的“Any CPU” 修改为 “x86” 重新编译。

    有关XLS与XLSX版本的连接字符串设置

    使用 Microsoft.Jet.OLEDB.4.0; 如果 Excel 文件名 的扩展名为 xlsx,那么代码运行过程中,会报  “不能更新。数据库或对象为只读。” 的错误。

    如果使用 Microsoft.ACE.OLEDB.12.0,扩展名为 xlsx 的时候则不产生错误。因此,C#产生报表的时候,优先使用 Microsoft.ACE.OLEDB.12.0 驱动, 当目标机器无法启用 Microsoft.ACE.OLEDB.12.0 的时候,才使用 Microsoft.Jet.OLEDB.4.0 驱动 。

    此时连接字符串改为:

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

    需要注意的是,上面的驱动,能够成功的创建 xlsx 文件,但是用 Excel 打开的时候,会提示错误信息。驱动需要修改为:

    sConnectionString  = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="  + excelFileName + ";Extended Properties="Excel 12.0 Xml;HDR=YES"";
    

    即:

    修改的地方 Extended Properties="Excel 12.0 Xml;HDR=YES"。 与以前的  Extended Properties=Excel 8.0, 仅仅当扩展名为   xlsx  的时候, 才使用上面那个驱动的写法。如果扩展名还是  xls  那么还是继续使用 原有的写法,也就是那个 Extended Properties=Excel 8.0 的

  • 相关阅读:
    基础面试
    三级联动
    数据库分裤分表操作
    缓存的三种方式
    php部分--session的三种用法
    css
    数组
    生成中国地区随机IP
    xml的读取
    React入门
  • 原文地址:https://www.cnblogs.com/arxive/p/5849831.html
Copyright © 2011-2022 走看看