问题是,当我按如下所示设置DataSet时,默认设置仅从电子表格单元格中读取255个字符,并将它们放入表中。
DataSet exData = new DataSet();
string connectionString = String.Format(ConnectionString, path);
OleDbDataAdapter ex = new OleDbDataAdapter(ExcelQuery, connectionString);
ex.Fill(exData);我使用的是Extended Properties=Excel 8.0和Microsoft.Jet.OLEDB.4.0,连接到excel工作表没有问题。
根据我的阅读,这是由于Jet.OLEDB提供商,我应该使用什么?
我可能无法更新到新的Jet提供商,有什么解决办法吗?对于超过255个字符的数据,任何解决方法都将受到限制,即不能直接将Excel文档修改为包含两个或更多单元格。
谢谢。
发布于 2011-05-12 23:11:33
jet中文本列的标准最大长度为255个字符。我还没有尝试过这样做,但是如果您创建了一个schema.ini文件,并告诉它您的列是一个备注类型,那么您也许能够放入更多的数据。
发布于 2015-06-12 13:38:38
使用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];发布于 2014-10-02 00:02:58
我在这里遇到了同样的问题,我发现,默认情况下,只有前8行用于设置列的类型。如果在第8行下面的任何其他行上有一个更大的字符串,它将被截断。
您只需运行Regedit并转到:
32位版本:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
或
64位版本:
HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\microsoft\jet\4.0\Engines\Excel
在这里,将TypeGuessRows更改为,这样Jet引擎将使用所有行来设置数据类型。
来源:Why SSIS always gets Excel data types wrong, and how to fix it!
https://stackoverflow.com/questions/5979892
复制相似问题