繁体   English   中英

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

[英]Data truncated after 255 bytes while using Microsoft.Ace.Oledb.12.0 provider

我正在使用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\"");

有解决方案吗 提前致谢。

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

我发现连接字符串中的TypeGuessRows没有效果。

但是增加以下注册表位置中的TypeGuessRows有效:

HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Wow6432Node \\ Microsoft \\ Office \\ 12.0 \\ Access连接引擎\\ Engines \\ Excel

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

解决方案非常简单。 只需将包含此大数据的列的格式更改为excel表中“常规”的“文本”。

现在我觉得自己像个n00b。

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

您最好的选择是保证该前八行的大多数长度超过255个字符。

资源

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

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

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

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

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

Excel有一些限制。

Excel规格和限制 - 2013年

正如您在链接中看到的那样:

功能最大限制列宽255个字符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM