我正在使用ACE提供程序读取Excel工作表,某些单元格包含大于255个字节的数据。我尝试在注册表设置中更改TypeGuessRows,并从连接字符串中设置相同的值。我仍然在代码中得到截断值。我无法重组excel表或使用其他提供商。我运行64位窗口。我的办公室版本是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\"");
任何解决方案?提前谢谢。
答案 0 :(得分:3)
我也在64位Windows 7上使用Microsoft.ACE.OLEDB.12.0
。
我发现连接字符串中的TypeGuessRows
无效。
但是增加以下注册表位置中的TypeGuessRows
有效:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Office \ 12.0 \ Access Connectivity Engine \ Engines \ Excel
More info on a similar bug(虽然您可能已经知道这一点,因为您已经尝试更改TypeGuessRows)
答案 1 :(得分:1)
问题是ACE驱动程序正在为您填充数据集的列推断TEXT数据类型。文本列限制为255个字符。您需要强制它使用MEMO数据类型。
您最好的选择是保证该列中前八行中的大多数的长度超过255个字符。
此行为取决于Excel的预测性质 驱动器/供应商。由于它不知道数据类型是什么,它有 根据前几行中的数据进行猜测。如果 字段的内容超过255个字符,它位于第一个字符中 几行,那么数据类型将是Memo,否则就会 可能是Text(会导致截断)。
答案 2 :(得分:1)
解决方案非常简单。 只需将包含此大数据的列的格式更改为excel表中“常规”的“文本”。
现在我觉得自己像个n00b。
答案 3 :(得分:0)
参考此链接。我认为这是问题(尝试使用备注字段)
http://allenbrowne.com/ser-63.html
在Access表格中,文本字段限制为255个字符,但备注字段可以处理64,000个字符(约8页单行间隔文本)
很好的解决方法:看一下this堆栈答案
答案 4 :(得分:0)