C#.NET Excel和OLEDB连接字符串

4

我希望能够从Excel文件中读取数据并在我的Windows应用程序中使用。

连接字符串:

provider = Microsoft.Jet.OLEDB.4.0; Data Source = "Excel File"; 
Extended Properties =    \"Excel 8.0; HDR = Yes; ImportMixedTypes = Text;
Imex = 1;\" 

通过这个连接字符串,我能够从Excel文件中读取数据,即使计算机上没有安装Microsoft Office-Excel。但是,不知何故,我的程序与该连接字符串不兼容。

目前我使用的连接字符串是:

provider = Microsoft.ACE.OLEDB.12.0; Data Source = "Excel file"; 
Extended Properties = "Excel 12.0; HDR = Yes; Imex = 1;

这个连接字符串与我的程序兼容,但是它只能在安装了Microsoft Office-Excel的计算机上运行。

有人可以建议我错在哪里吗?

谢谢。


1
是xls还是xlsx格式? - Yatrix
我认为问题在于你使用的OLEDB版本。请尝试进行研究。 - Botonomous
@Yatrix:我正在尝试读取xls和xlsx两种文件。 - Rushabh Shah
你是在使用直接的 ADO,还是其他手段? - eppdog
2个回答

5
Microsoft在2003年之后的所有Windows版本中都删除了JET引擎,包括64位的Windows 2003。 ACE是现代的替代方案,但它也没有与Windows基本安装一起分发。
为了使用ACE,您需要将免费的ACE可再发行程序从Microsoft部署到所有未安装Office的目标机器上。然后,您可以在其中任何一个上使用您列出的第二个连接字符串。
从Microsoft获取它: http://www.microsoft.com/en-us/download/details.aspx?id=13255

给我一些时间,我正在尝试安装这个驱动程序,并测试我的程序。 - Rushabh Shah
请务必阅读该页面上的说明,因为它提供了有关连接字符串的具体信息。 - dodexahedron
+1 这个人明白 ACE 不像 JET 一样随 Windows 自带。 - ta.speot.is
我在两台没有安装Microsoft Excel的不同电脑上尝试了一下,但结果是相同的。 - Rushabh Shah
经过几天的努力,我终于找到了一个简单的解决方案来解决我的问题。连接和你指定的驱动程序都可以正常工作,但并非所有情况下都能如此。我只是将Excel文件保存为97-2003格式,即xls,如果是.xlsx,则一切似乎都很顺利。非常感谢你的帮助。 - Rushabh Shah
当您尝试处理 .xls 文件时,是否将 Extended Properties 值设置为 "Excel 8.0"?对于 .xls 文件,它必须是 8.0,而对于 .xlsx 文件,它必须是 12.0。 - dodexahedron

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接