答案一:

因为没有安装64位的Jet40驱动。可以到
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d 下载。但是前提你必须安装了64位的Office。
如果你安装的是32位Office,则下载32位驱动。但同时你必须将你的应用程序将原有的AnyCPU更改为CPU x86.
如果是Web端程序,可以通过IIS的应用程序池进行配置。将【启用32位应用程序】启用即可。

答案二:

项目中要把数据导出到 Excel 文件的功能。 如果使用 Excel.Application/Excel.Workbook/Excel.Worksheet 那个体系去处理的话。 我就是要输出一个无格式的 Excel 数据文件,花费时间太长。 代码写起来也复杂。

于是就使用 String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";Extended Properties=Excel 8.0;"; OleDbConnection cn = new OleDbConnection(sConnectionString); string sqlCreate =     @"CREATE TABLE [Sheet名] ([列1] VarChar, [列2] VarChar, [列3] VarChar, [列4] Int)"; OleDbCommand cmd = new OleDbCommand(sqlCreate, cn); //创建Excel文件 cn.Open(); //创建表 cmd.ExecuteNonQuery();

String queryString =     String.Format("INSERT INTO [Sheet名] ([列1], [列2], [列3], [列4]) VALUES ('{0}', '{1}', '{2}', {3})",         "Test1",         "Test2",         "Test3",         4); // 插入. icmd.CommandText = queryString; icmd.ExecuteNonQuery();

这种简单的方式处理。

但是自己机器上运行正常,但是跑到别人电脑上面运行,就出错了。 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

首先是考虑到,我的机器是Office 2007,目标机器上的是 Office 2010. 会不会是 Microsoft.Jet.OLEDB.4.0 太老了? 新版本的不支持。

于是修改一下 String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";Extended Properties=Excel 8.0;"; 修改为 String sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";Extended Properties=Excel 8.0;";

然后依然是本机能够正常运作,目标机器不行。

再去仔细了解一下,发现目标机器是 64位系统的。

看帖子显示,Microsoft.ACE.OLEDB.12.0 是不能再x64上使用的。 于是再回到 开发工具那里,在项目的 “属性”那里, 目标平台由原有的“Any CPU” 修改为 “x86” 重新编译完毕后,再放回目标机器上面测试,终于正常运行了。

再回头去看看 在 x86 的情况下, 使用 Jet 或者 ACE ,都能在 64位的操作系统,安装了 Office 2010的机器上,正常的创建 Excel 报表。

2011年4月13日 追加

使用 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 驱动 。

2011年6月8日追加

上面的驱动,能够成功的创建 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 的

[转载:http://hi.baidu.com/wangzhiqing999/item/48d316fbe631c6e41a111f29]

未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"的更多相关文章

  1. 未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序。解决办法

    在64位服务器系统上,默认不支持Microsoft.Jet.OLEDB.4.0的驱动程序,系统默认会提示未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"的错误 ...

  2. 对路径的访问被拒绝,解决之后又报-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

    服务器环境:Server 2008  64位系统 问题:在导入Excel题录表时报错,1对路径的访问被拒绝,2未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序. 解决方案 ...

  3. 解决方法:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    在Windows Server 2008 x64 上部署一个Vs 2008开发的.net2.0 的asp.net web 程序,调用了office的组件来导入导出excel文件,其中托管管道模式为集成 ...

  4. 解决方法of未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    在开发的一个报表转换功能涉及到Excel97-2003(.xls)文件的导入.使用oledb来读取excel数据.代码为: public static DataSet LoadDataFromExce ...

  5. 关于64位windows2003 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 的问题

    我了个去啊! 在自己机器上测试通过的excel导入功能在客户服务器上死活都不好用,查了半天后来发现客户服务器是64位的win2003!! try catch捕捉问题为:未在本地计算机上注册“Micro ...

  6. 解决方法:64位系统-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    win7或win8 64位下调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/ ...

  7. 解决方法:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    win7或win8 64位调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/” ...

  8. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0

    昨天修改了一个工具,编译后本机运行正常,但放到服务器上执行却不行,提示: message:GetOleDbSchemaTable requires an open and available Conn ...

  9. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序的处理方式

    今天客户向我反映一个问题,当他们在用我们的系统导出excel表格时,报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 经过找资料终于得到解决方法,记录一下. 在对应 ...

  10. 连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    问题与解决 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 错误. string strCon = " Provider = Microsoft.Jet.OL ...

随机推荐

  1. HDUOJ-----Brave Game

    Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. jquery动态绑定事件

    什么是动态绑定? 动态绑定是指动态添加的DOM节点或者html元素,他们最开始时运行的时候是不存在的.如果要给这些动态加入的节点增加事件,就必须要用jquery的on方法来绑定事件. $('.cont ...

  3. python学习笔记013——模块中的私有属性

    1 私有属性的使用方式 在python中,没有类似private之类的关键字来声明私有方法或属性.若要声明其私有属性,语法规则为: 属性前加双下划线,属性后不加(双)下划线,如将属性name私有化,则 ...

  4. Android 下拉菜单 Spinner 赋值

    private Spinner m_spiModel = null; //产品型号 m_spiModel = (Spinner) findViewById(R.id.spiModel);//产品型号 ...

  5. PLSQL_通过UTL_MAIL发送并发程式结果报表至用户邮箱(案例)

    2014-06-01 Created By BaoXinjian

  6. Android:GridView中实现点击Item变色,再点击还原。

    使用GridView时想实现点击其中的一个Item,该Item改变背景,再次点击Item变回原来的背景,网上搜了很多资料都没有看到类似的案例,但还是有所启发,现来分享我的做法. 首先,首先为GridV ...

  7. golang(5)使用beego 开发 api server 和前端同学拆分开发,使用swagger

    1,beego api Swagger 是一个规范和完整的框架,用于生成.描写叙述.调用和可视化 RESTful 风格的 Web 服务.整体目标是使client和文件系统作为服务器以相同的速度来更新. ...

  8. VS2010 单元测试,性能测试 案例

    http://www.cnblogs.com/heqichang/category/315226.html

  9. python AES双向对称加密解密

    高级加密标准(Advanced Encryption Standard,AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分 ...

  10. angular.js 中同步视图和模型数据双向绑定,$watch $digest $apply 机制

    Angular.js 中的特性,双向绑定. 让视图的改变直接反应到数据中,数据的改变又实时的通知到视图,如何做到的? 这要归功于 scope 下面3个重要的方法: $watch $digest $ap ...