未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"
答案一:
因为没有安装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"的更多相关文章
- 未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序。解决办法
在64位服务器系统上,默认不支持Microsoft.Jet.OLEDB.4.0的驱动程序,系统默认会提示未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"的错误 ...
- 对路径的访问被拒绝,解决之后又报-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
服务器环境:Server 2008 64位系统 问题:在导入Excel题录表时报错,1对路径的访问被拒绝,2未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序. 解决方案 ...
- 解决方法:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
在Windows Server 2008 x64 上部署一个Vs 2008开发的.net2.0 的asp.net web 程序,调用了office的组件来导入导出excel文件,其中托管管道模式为集成 ...
- 解决方法of未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
在开发的一个报表转换功能涉及到Excel97-2003(.xls)文件的导入.使用oledb来读取excel数据.代码为: public static DataSet LoadDataFromExce ...
- 关于64位windows2003 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 的问题
我了个去啊! 在自己机器上测试通过的excel导入功能在客户服务器上死活都不好用,查了半天后来发现客户服务器是64位的win2003!! try catch捕捉问题为:未在本地计算机上注册“Micro ...
- 解决方法:64位系统-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
win7或win8 64位下调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/ ...
- 解决方法:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
win7或win8 64位调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/” ...
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0
昨天修改了一个工具,编译后本机运行正常,但放到服务器上执行却不行,提示: message:GetOleDbSchemaTable requires an open and available Conn ...
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序的处理方式
今天客户向我反映一个问题,当他们在用我们的系统导出excel表格时,报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 经过找资料终于得到解决方法,记录一下. 在对应 ...
- 连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
问题与解决 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 错误. string strCon = " Provider = Microsoft.Jet.OL ...
随机推荐
- STL容器 erase的使用陷井
http://www.cppblog.com/beautykingdom/archive/2008/07/09/55760.aspx?opt=admin 在STL(标准模板库)中经常会碰到要删除容器中 ...
- Javakeyword之this
this的作用: 1) this是当前对象的一个引用.便于对当前对象參数的使用. 2)能够返回对象的自己这个类的引用.同一时候还能够在一个构造函数其中调用还有一个构造函数 this演示样例: publ ...
- MySQL C 客户端的内存泄漏问题
我们的一个服务器软件在线上环境运行时出现了内存缓慢增长的问题. 用valgrind测试 MySQL的C客户端mysqlclient发现,它在正常的使用中会被valgrind报出存在内存泄漏. 1 正常 ...
- PL/SQL配置oracle客户端,登录远程数据库配置
本地未安装Oracle数据库,但又想使用PL/SQL连接服务器端的数据库. 1.新建NETWORK文件夹, 在该文件夹下新建ADMIN文件夹, 在该文件夹下新建tnsnames.ora文件(拷贝下面的 ...
- 【LeetCode】39. Combination Sum (2 solutions)
Combination Sum Given a set of candidate numbers (C) and a target number (T), find all unique combin ...
- ASP.NET 安全系列 Membership三步曲之入门篇 - Jesse Liu
Membership 三步曲 ASP.NET 安全系列 Membership三步曲之入门篇 ASP.NET 安全系列 Membership三步曲之进阶篇 ASP.NET 安全系列 Membership ...
- js学习笔记27----键盘事件
键盘事件主要有2个: onkeydown : 键盘按下时触发,如果按下不抬起,那么会连续触发. onkeyup : 键盘弹起时触发 不是所有元素都能接收键盘事件,只有能够响应用户输入的元素,换 ...
- api 和 C# 里的接口的区别?
从狭义上讲,接口指的是借由 interface 定义的结构,接口中只对方法做定义,不做实现.具体实现由最终实现接口的类提供. interface 作为一种类型,可以用于定义方法,我们只关心类实现了接口 ...
- APP三种开发模式
目前主流应用程序大体分为三种:Web App(网页应用).Hybrid Ap(混合应用)p. Native App(原生应用). nativeapp是一个原生程序,一般运行在机器操作系统上,有很强的交 ...
- mark Pay http://git.oschina.net/littleCrazy/dianshangpingtai-zhifu/blob/master/OrderPayController
@Controller @RequestMapping("/api/pay/") public class OrderPayController extends BaseContr ...