【发布时间】:2020-10-29 18:47:09
【问题描述】:
我已经阅读了很多关于这个问题的信息。
SO中有很多问题,但问题仍然存在,如下:
我知道这个connection string 适用于旧版 Office:
string oldCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ path + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
我知道 较新 版本的 Office 有这个 connection string:
string nweCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ path + ";Extended Properties=Excel 12.0;";
但是,当我将 connection string 用于具有 ACE 的较新版本时,出现此错误:
“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。
我还阅读了其他问题,我应该先安装 ACE,一切都会正常工作。
-
我没有安装 ACE 驱动程序,也没有安装应该使用此应用程序的其他计算机,有没有办法使用 Office 2016 的 JET 读取 Excel 文件或365(2003 年以上的所有内容)。
-
我无法在我的每个客户端中都安装 ACE 以便能够使用我的应用程序,这根本不实用。
有没有办法做到这一点?
【问题讨论】:
-
您可能可以在注册表中的 HKEY_CLASSES_ROOT 下查找名为 Microsoft.ACE.OLEDB.* 的键以查看已安装的内容。但是,如果您不能自己安装它,并且不能依赖它的安装,您可能需要使用其他一些机制来读取 Excel 文件 - 有些库可以在不依赖任何安装的情况下读取它们,但我不'认为他们没有类似 OleDB 的接口。
-
@Rup ,可以帮我解决这个问题吗?
-
抱歉,我之前从未使用过这些。
-
不是我的领域,但您的应用程序是否编译为与目标计算机上的 Office 版本相同的位数 (32 v 64)?
-
@Rory,是的,但这不是问题,问题是我希望我的应用程序也可以在其他机器上运行,不仅是我的,这是我卡住的地方
标签: c# excel connection-string oledb ms-jet-ace