惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
Scott Helme
Scott Helme
爱范儿
爱范儿
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
V
V2EX
腾讯CDC
博客园_首页
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
罗磊的独立博客
Recorded Future
Recorded Future
博客园 - 聂微东
O
OpenAI News
S
Secure Thoughts
Hacker News: Ask HN
Hacker News: Ask HN
S
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Project Zero
Project Zero
宝玉的分享
宝玉的分享
K
Kaspersky official blog
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
Google Online Security Blog
Google Online Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Webroot Blog
Webroot Blog
云风的 BLOG
云风的 BLOG
Simon Willison's Weblog
Simon Willison's Weblog
C
Check Point Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
美团技术团队
L
Lohrmann on Cybersecurity

博客园 - 痴人说梦

批量清除数据库中被植入的垃圾信息 asp.net(C#) 远程获取网页内容代码分享 JavaScript有关的10个怪癖和秘密 js javascript 鼠标控制图片左右滚动带自动翻滚,图片滑动新闻展示 - 痴人说梦 asp.net2.0邮箱发送代码 JS解析,格式化日期 JavaScript 实用脚本,很好,珍藏起来[转贴] WinForms / 23个.NET开源项目 使用js获取QueryString的方法小结 js实现图片高清晰等比缩小 ASP.NET使用NPOI类库导出Excel jQuery获取Select选择的Text和 Value(转) - 痴人说梦 - 博客园 IT项目管理工具总结 - 痴人说梦 - 博客园 有关类及类之间,类成员代码执行顺序链接 window.opener 的用法 用js进行url编码后用php反解以及用php实现js的escape功能函数总结 JS得到当前鼠标的位置 JCalendar 日历控件 div定位 鼠标放在按钮上显示层提示 - 痴人说梦 - 博客园
解决Windows Server2008R2中导入Excel不能使用Jet 4.0
痴人说梦 · 2012-05-08 · via 博客园 - 痴人说梦

由于CRM系统在部署公司内部使用的时,为了能够使用8G的内存,所以操作系统使用了Windows Server2008R2(Windows Server2008R2是64位系统,同时配置IIS7.0),但是系统在部署后,测试时发现CRM系统中的导入功能不能使用,后经过调试发现从Excel中取数据,它速度快也很方便的代码居然出现了异常,具体代码如下:

string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;” + “Data Source=” +  strFileName + “;” + “Extended Properties=Excel 8.0;”;
OleDbDataAdapter ExcelDA = new OleDbDataAdapter(“SELECT * FROM [" + strSheet + "$]“, strConn);

DataSet dstExcel = new DataSet();
ExcelDA.Fill(dstExcel, “ExcelInfo”);

在上面代码中一直提示“无法找到此类型的驱动”,既然没有驱动,就装了OFFICE的组件,测试后还是一样报此错误,所以就上网搜索得知IIS7会支持一部分32位DLL,但对于与底层绑定较深的组件却不支持。Jet 4.0显示属于后一种组件,微软已经不支持Jet 4.0的升级,所以目前没有,今后也不会再出现Jet 4.0的64位版本,意思说这个组件将无法使用在64位和IIS7.0中。

接着后来再去查找资料说,可以把将应用程序池的Enable 32 bit选项设为True,但IIS的稳定性和兼容性不太好,系统中还用到了Oracle Client,在64位系统一定要使用64位的DLL。所以无法把IIS中应用程序池设置成为32位的应用池的方法来解决这个问题。

只能接续网络搜索终于有了可以在64位置上使用EXCEL的替代方案,使用Microsoft.ACE.OLEDB对Excel进行操作。修改后的脚本如下:

string strConn = “Provider=Microsoft.ACE.OLEDB.12.0;” + “Data Source=”+  strFileName + “;” + “Extended Properties=’Excel 12.0;HDR=YES’”;
OleDbDataAdapter ExcelDA = new OleDbDataAdapter(“SELECT * FROM [" + strSheet + "$]“, strConn);

DataSet dstExcel = new DataSet();
ExcelDA.Fill(dstExcel, “ExcelInfo”);

注意’Excel 12.0;HDR=YES’处的单引号不能少。可是测试后还是不能使用,最后才继续搜索资料得知还需要安装一个“AccessDatabaseEngine_X64”驱动程序,这样就可以解决64位EXCEL的导入问题。果然这段代码终于成功,最终导入的问题也解决了。

经过测试,发现使用Microsoft.ACE.OLEDB对Excel进行操作解决虽然64位为体代码在32位windows server 2003操作系统中居然不能用,为了能够让CRM系统的excel导入程序能够在64位操作系统和32位系统都能用,最后解决方法是在web.config的配置文件里增加一个OSType的参数设置,如果在32的操作系统,就使用以前的导入代码,如果是64位置系统我们就使用后来替代方案。