使用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'"");
解决方案吗?
我也在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个字符