如何从Excel中读取超过255个字符的数据行

问题是如下所示设置DataSet时,默认情况下只读取电子表格单元格中的255个字符,并将它们放入表格中。

DataSet exData = new DataSet(); string connectionString = String.Format(ConnectionString, path); OleDbDataAdapter ex = new OleDbDataAdapter(ExcelQuery, connectionString); ex.Fill(exData); 

我正在使用扩展属性= Excel 8.0和Microsoft.Jet.OLEDB.4.0,连接到Excel表没有问题。

从我的阅读来看,这是由于Jet.OLEDB提供者,我应该使用什么?

而且我可能无法更新到Jet的新供应商,有没有什么解决办法? 任何解决方法将被限制在不能直接修改Excel文档以包含两个单元或更多的数据超过255个字符。

谢谢。

jet中文本列的标准最大长度是255个字符。 我还没有尝试过,但是如果你创build了一个schema.ini文件并告诉它你的列是一个备忘录types,那么你可能可以放入更多的数据。

使用ExcelDataReader并在您的项目中添加引用。 并使用下面的代码来读取超过255列的Excel …

 FileStream stream = File.Open(strFileName, FileMode.Open, FileAccess.Read); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); DataSet result = excelReader.AsDataSet(); excelReader.Close(); return result.Tables[0]; 

我在这里遇到同样的问题,我发现,默认情况下,只有前8行用于设置列的types。 如果你在8号下面的任何一行有更大的string,它将被截断。

您只需要运行Regedit并转到:

32位版本:

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\喷气\ 4.0 \发动机\ EXCEL

要么

64位版本:

HKEY_LOCAL_MACHINE \ SOFTWARE \ wow6432node \微软\喷气\ 4.0 \发动机\ EXCEL

在那里,将TypeGuessRows更改为0 ,以便Jet引擎将使用所有行来设置数据types。

来源: 为什么SSIS总是Excel数据types错误,以及如何解决它!

这里描述了同样的问题。
为什么你不考虑使用Excel互操作性的任何具体原因?