Jet Engine - 255个字符截断

时间:2009-10-05 10:28:04

标签: .net excel import oledb jet

我需要将Excel电子表格导入我的程序并使用以下代码:

string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;IMEX=1;HDR=NO;""", MyExcelFile.xls);

command.CommandText = "SELECT * FROM [Sheet1$]";

(注意,上面的代码不是真正的代码,但应该让你看看我在做什么)

我正在导入文件,唯一的问题是Excel工作表中超过255个字符的任何列都被截断。

有没有办法解决这个问题?

我在某处读到,如果你确保前8行中的列中有一长串文本,那么它将被视为备注字段,因此不会被截断,但似乎不起作用。< / p>

有什么想法吗?

格雷姆

4 个答案:

答案 0 :(得分:6)

几次撞到这一个。幸运的是,有一个注册表黑客需要修复,在MSDN上有描述:http://support.microsoft.com/kb/189897

实际上,Excel只查看前八行数据以确定列的长度。如果长度为255个字符或更少,则255是默认值。我上面引用的MSDN文章解释了如何添加一个注册表项“TypeGuessRows”,它告诉Excel要扫描多少行以确定列长度。

答案 1 :(得分:1)

可能您的问题有一个更简单的解决方案,但作为最后的手段,尝试将您的Excel文件保存为CSV文本文件,然后使用常规文件和字符串操作类而不是JET引擎处理它。

答案 2 :(得分:0)

因为我无法找到我需要的确切答案,所以我将把它留在这里以防万一它可以帮助任何人。

css/default.css

Source

答案 3 :(得分:-1)

通常最好导入现有表格。通过代码创建合适的表并不太困难。