8

我需要将 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 行内的列中有一长行文本,那么它将被视为备注字段,因此不会被截断,但这似乎不起作用。

有任何想法吗?

格雷姆

4

4 回答 4

6

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

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

于 2009-10-05T10:43:01.223 回答
1

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

于 2009-10-05T10:37:15.370 回答
0

因为我找不到我需要的确切答案,所以我将把它留在这里,以防它对任何人有帮助。

HKEY_LOCAL_MACHINE ► Software ► Wow6432Node ► Microsoft ► Office ► 12.0 ► Access Connectivity Engine ► Engines

TypeGuessRows = 0

来源

于 2016-04-28T15:00:29.757 回答
-1

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

于 2009-10-05T10:59:04.170 回答