博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"
阅读量:5134 次
发布时间:2019-06-13

本文共 2324 字,大约阅读时间需要 7 分钟。

答案一:

因为没有安装64位的Jet40驱动。可以到

 下载。但是前提你必须安装了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 的

[转载:]

转载于:https://www.cnblogs.com/ChineseMoonGod/p/5683759.html

你可能感兴趣的文章
Nginx 404 500
查看>>
开发项目的简单流程(需求、数据库、编码)
查看>>
web开发
查看>>
二维数组
查看>>
Ajax提交表单数据(包含文件)
查看>>
端口映射
查看>>
机器学习笔记001
查看>>
MySQL操作
查看>>
Android开发之万能适配器
查看>>
C++对文件的操作
查看>>
批处理脚本 - 可移动的远程桌面启动器
查看>>
试验笔记 - Eclipse的.class反编译插件
查看>>
初学linux
查看>>
Hao Yin Jian 寒假第一周
查看>>
Android odex文件反编译
查看>>
8.BLE---错误码
查看>>
缓存命中率
查看>>
Introducing and integrating Hibernate(Chapter 2 of Hibernate In Action)
查看>>
HashMap(JDK1.8)
查看>>
读书笔记_Effective_C++_条款七:为多态基类声明virtual析构函数
查看>>