由于微软在2017-10-10左右更新了安全补丁(KB4041678,KB4041681)
从而更新了Microsoft JET Database Engine导致asp、asp.net等无法读取Excel。
出错提示1:Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC Excel 驱动程序] 保留错误 (-5016); 没有这种错误的消息。
出错提示2:导入或者查询excel 提示:外部数据库驱动程序中(1)的意外错误
一直正常,没有修改过配置,只是更新了并梁补丁就查询不了了,所以基本上是补丁问题。
百度到的方法大都是卸载补丁
解决方案:在控制面板>程序>程序和功能>已安装更新中,找到对应的两个补丁,进行卸载。
本人也收到多位asp+excel通用查询系统忠实用户的反馈。
其中一位用户提供了解决方法,本人亲测可用,故予以分享。
实现原理:使用旧版msexcl40.dll即可解决。
第一步:下载旧版 msexcl40.dll
打补丁后异常的新版:337KB版本4.0.9801.1
我们得下载最新旧版:332KB版本4.0.9801.0
或更早版本绝模运:比如:4.0.9502.0
第二步:更名后复制到相同位置
文件名码羡更改msexcl40.dll为msexcl40_aiyaha.dll
复制到C:\Windows\SysWOW64\下
新复制的旧版位置:C:\Windows\SysWOW64\msexcl40_aiyaha.dll
第三步:修改注册表对应的位置参数
运行-->regedit 进入注册表并搜索msexcl40.dll
得到注册表位置:(如图)
双击修改名称win32值为:C:\Windows\SysWOW64\msexcl40_aiyaha.dll
第四步:Win2008 64位环境下亲测,无需重启已经正常
一、最常用的 OLE 自动化方式这个方式应该说是功能最全的方式,可能也是应用的最多的方式。由于这种方式采用的是隐藏启动 Office Excel 的方式,所以几乎是全能,任何功能都可以完成。不过缺点也是比较明显的:
1、采用 OLE 方式,需要用户计算亏旅物机上安装有 Office Excel,否则就失败;
2、由于是隐藏启动 Office Excel,而 Mcirosoft 的一贯作风就是功能强销液大、体积巨大无比,所以这个速度是个很大的瓶颈。
3、它的基本方法是使用导出 .h 进行 OLE *** 作,这种方式在文件数目不多,对功能要求大过速度的话,这是首选。
二、ADO/ODBC 的方式
这种方式需要确保 ODBC 中已安装有 Excel 表格文件的驱动 "MICROSOFT EXCEL DRIVER (*.XLS)",所以同样依赖于 Office Excel 是否安装。
三、Sourceforge 上的开源 Excel 库
搜索了一下,有几个似乎人气比较高,像 libXLS,XLSlib 等,下载下来看了一下说明,好像更多是作为 php 的插件来使用的,对 C++ 似乎没多大帮助。
四、第三方收费 Excel *** 作库
第三方收费的,找到一个 LibXL (注意不是 LibXLS),他的镇掘官方网站是 http://www.libxl.com/
五、一些不需要依赖 Office Excel 的方式
六、重点推荐的
BasicExcel !
作者和 CSpreadSheet 的作者是同一个,不过是因为考虑到以前 CSpreadSheet 的一些局限性和想实现兼容性,重新写的。地址是:http://www.codeproject.com/KB/office/BasicExcel.aspx
尝试下这个裂裂select * INTO XXXX FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=e:\歼源脊氏渗XXXX.xlsExtended Properties=Excel 8.0')...[sheet1$]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)