Jet引擎 – 255个字符截断

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

有任何想法吗?

格雷姆

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

碰到这个几次。 幸运的是有一个registry窍门修复,在MSDN这里描述: http : //support.microsoft.com/kb/189897

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

因为找不到我需要的确切答案,所以我会在这里留下这个以防万一。

 HKEY_LOCAL_MACHINE ► Software ► Wow6432Node ► Microsoft ► Office ► 12.0 ► Access Connectivity Engine ► Engines TypeGuessRows = 0 

资源

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