你可能读取Excel功能的程序在某些计算机上第一次执行就报错了,但是之前在别的地方是好的。
大多数网上文章的建议解决办法
建议去微软官网装AccessDatabaseEngine。
AccessDatabaseEngine2016
https://www.microsoft.com/en-us/download/details.aspx?id=54920
AccessDatabaseEngine2010
https://www.microsoft.com/en-us/download/details.aspx?id=13255
AccessDatabaseEngine2007
https://www.microsoft.com/en-us/download/details.aspx?id=23734
打开这些下载页又迷茫了,该下载X86还是X64的版本?
更坏的情况,无论下载哪个版本,都无法安装,就这样搞笑的报错。
==>装64位的,说你装了32位版不能装
==>装32位的,说你装了64位版不能装
M$很幽默,可我真抓狂。
有大神说了用一个安装版修改器来屏蔽M$的幽默。具体是这样做,测试可行。图是我补的。原文丢图了。
原文地址https://blog.csdn.net/u010032207/article/details/52171972
为了避免找不到这个软件的下载或者捆绑。这里直接提供一个网盘地址。
链接:https://pan.baidu.com/s/1xAIqgCmNMT5LdLtjJkgvdw
提取码:860t
针对AccessDatabaseEngine的X64版本
先用WinRar把AccessDatabaseEngine_X64.exe解压缩,里面会有一个AceRedist.msi安装文件,然后用Orca打开。
找到LaunchCondition里面的BLOCKINSTALLATION,删掉,保存。
现在运行AceRedist.msi一路默认安装。结束。
谈下原因,当然就对症下药了
安装完了,我估计还是有部分同学问题没有得到解决。问题的关键是开发人员本地如果装的是x86的office,并且工程又用的默认编译参数,你可以继续往下看。
这是因为oledb有x86和x64版本之分。可能你应该考虑提供两套编译版本x86和x64的给不同的用户使用
在编译发布时需要针对目标计算机(也就是部署给谁用?服务器还是某个用户的客户端)的架构决定设置编译参数。
如果没有X64的话,可以在Build菜单-->Configuration Manager打开的对话框中建立一个x64的选项。
你只需要确认用户机或者服务器是装了x86还是x64的office(前提肯定要office2007以上),就提供你对应的编译条件的软件,问题解决。
所以,其实也没有必要逼迫用户装AccessDatabaseEngine。不过注意一点,除了office,你的工程是否还有别的组件受编译的platform的影响,可能会最终决定你怎么面对这个问题。