将Excel工作表加载到DataTable中,但每个单元格只导入前256个字符,

我有一个Excel表格,我想用OleDb加载到数据表中。 该工作表包含多达1000个字符的多行文本列。

但是,使用下面的代码,导入后,每个单元格的DataTable中只有256个字符。

这是提供者的限制还是可以告诉它阅读整个列?

var connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\file.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"; var sheetName = "Sheet1"; using (var con = new OleDbConnection(connectionString)) { con.Open(); var table = new DataTable(sheetName); var query = "SELECT * FROM [" + sheetName + "]"; OleDbDataAdapter adapter = new OleDbDataAdapter(query, con); adapter.Fill(table); return table; } 

我find了解决scheme。

问题是OleDb正在猜测,哪个dbtype可以select。 而且,如果前几行只包含less于256个字符的数据,则将应用于所有行。

但是,作为一种解决方法,我只是将一行大数据移动到工作表的开头,现在整个数据都被导入。

这是描述问题的链接。 还有一个registry项的解决方法,但我没有尝试过。

http://www.xtremevbtalk.com/showthread.php?t=206454

此registry修复工作适合我。

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel] "TypeGuessRows"=dword:00000000 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel] "TypeGuessRows"=dword:00000000