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

我正在使用ACE提供程序读取Excel表格,并且某些单元格包含大于255个字节的数据。 我试着在registry设置中更改TypeGuessRows以及从连接string中设置相同的值。 我仍然得到代码中的截断值。 我无法重组Excel表或使用其他提供者。 我运行64位窗口。 我的办公版是2013年。(有一点小小的怀疑是否因为这个原因)。

这是我的连接string; 对于那些数据<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\""); 

任何解决scheme 提前致谢。

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

我发现连接string中的TypeGuessRows没有效果。

但是增加以下registry位置中的TypeGuessRows

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

有关类似错误的更多信息 (尽pipe您可能已经知道这是因为您已经尝试更改TypeGuessRows)

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

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

资源

此行为由Excel驱动程序/提供程序的预测性质决定。 由于它不知道数据types是什么,它必须根据前几行的数据进行猜测。 如果一个字段的内容超过了255个字符,并且它在前几行,那么数据types将是Memo,否则可能是Text(这将导致截断)。

解决这个问题非常简单。 只要将包含这些庞大数据的列的格式更改为Excel表格中“常规”中的“文本”即可。

现在我觉得自己是个n00b。

Excel有一些限制。

Excel规范和限制 – 2013

正如你可以在链接中看到发布:

function最大限制列宽度为255个字符

参考这个链接。 我认为这是问题(尝试使用备注字段)

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

在Access表中,文本字段限制为255个字符,但“备注”字段可以处理64,000个字符(大约8页单间隔文本)

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