使用Microsoft.Ace.Oledb.12.0提供程序时,在255字节之后截断的数据

本文关键字:字节 之后 数据 Oledb Ace Microsoft 程序 使用 | 更新日期: 2023-09-27 18:13:57

我正在使用ACE提供程序读取excel表格,某些单元格包含大于255字节的数据。我尝试更改注册表设置中的TypeGuessRows以及从连接字符串设置相同。我仍然在代码中得到截断的值。我不是在一个位置重组excel表或使用另一个提供商。我用的是64位的windows。我的office版本是2013年的。(我有点怀疑是不是因为这个)。

这是我的连接字符串;对于那些具有数据的单元,它工作得很好<255字节。

var connectionString = string.Format("provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='"Excel 12.0;IMEX=1;HDR=YES;TypeGuessRows=0;ImportMixedTypes=Text'"");

解决方案吗?

使用Microsoft.Ace.Oledb.12.0提供程序时,在255字节之后截断的数据

我也在64位Windows 7上使用Microsoft.ACE.OLEDB.12.0

我发现连接字符串中的TypeGuessRows没有作用。

但在以下注册表位置增加TypeGuessRows有效:

HKEY_LOCAL_MACHINE'SOFTWARE'Wow6432Node'Microsoft'Office'12.0'Access Connectivity Engine'Engines'Excel

关于类似错误的更多信息(尽管您可能已经知道这一点,因为您已经尝试更改TypeGuessRows)

解决这个问题非常简单。只需将excel表格中包含此大数据的列的格式从"General"更改为"Text"。

问题是ACE驱动程序正在推断要从中填充数据集的列的TEXT数据类型。文本列限制为255个字符。您需要强制它使用MEMO数据类型。

最好的办法是保证前8行的大部分长度超过255个字符。

来源

此行为是由Excel的预测特性决定的司机/提供者。因为它不知道数据类型是什么,所以它知道根据前几行的数据进行猜测。如果字段的内容超过255个字符,并且位于第一个数行,则数据类型为Memo,否则为可能是Text(这将导致截断)。

参考此链接。我认为这就是问题所在(尝试使用Memo字段)

http://allenbrowne.com/ser - 63. - html

在Access表中,文本字段限制为255个字符,但是Memo字段可以处理64,000个字符(大约8页的单行距文本)

很好的解决方法:看看这个堆栈答案

Excel有一些限制。

Excel规范与限制- 2013

你可以看到张贴的链接:

Feature Maximum Limit列宽255个字符