【发布时间】:2017-04-08 19:27:59
【问题描述】:
我正在尝试使用 System.Data.OleDb 和 Microsoft ACE OLEDB 提供程序读取恰好有一个非常大的文本单元格(大约 8900 个字符)的 .xls 文件。我无法控制 .xls 文件的内容。
尝试.Open() OleDbConnection 时出现以下异常:
Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll
Additional information: External table is not in the expected format.
我已最小化 .xls 文件,似乎文本单元格是导致异常的原因。我在 x64 操作系统上安装了 MS Office 2010 x86。
我尝试了以下所有方法,但都没有解决问题:
- ACE 12.0 x86
- ACE 12.0 x64
- ACE 15.0 x32
- 注册表调整以设置 TypeGuessRows = 0
- 连接字符串 IMEX=1
- 连接字符串扩展属性="Excel 8.0;"
- 连接字符串扩展属性="Excel 12.0;"
从我的研究看来,旧的 JET 提供程序过去常常将字段截断为 255 个字符。如果不抛出异常,我根本无法让 ACE 读取文件。
【问题讨论】:
-
该异常表明您正尝试从 .NET 应用程序执行此操作。如果是这样,那么如果您使用
C#、VB.NET或其他标记问题,您可能会得到更好的帮助。也就是说,我无法从 C# 重现您的问题。您能否提供一个小示例 .xls 文件的链接来演示该错误? -
是的,c#。将样本上传到dropfile.to/EZmAt3K。
-
在 Excel 中,您可以尝试数据选项卡 > 从 Access > 选择 excel 文件 > 等,然后在属性中检查生成的连接字符串。否则,您可以尝试一些 ODBC 驱动程序connectionstrings.com/excel-2007-odbc
标签: c# excel oledb ms-jet-ace