我在excel中绘制了所有列,然后我尝试使用这个
阅读工作表var file = theFile.Worksheet<myClass>("worksheetTitle").OrderBy(p => p.columnHeader).ToList();
这是我得到的错误:
System.Data.OleDb.OleDbException (0x80040E57): The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.
at LinqToExcel.Query.ExcelQueryExecutor.GetDataResults(SqlParts sql, QueryModel queryModel)
at LinqToExcel.Query.ExcelQueryExecutor.ExecuteCollection[T](QueryModel queryModel)
at Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ExecuteCollectionQueryModel[T](QueryModel queryModel, IQueryExecutor executor)
at Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ExecuteQueryModel(QueryModel queryModel, IQueryExecutor executor)
at Remotion.Data.Linq.QueryModel.Execute(IQueryExecutor executor)
at Remotion.Data.Linq.QueryProviderBase.Execute[TResult](Expression expression)
at Remotion.Data.Linq.QueryableBase`1.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
这是Excel ODBC驱动程序的问题,通常可以通过重新排序电子表格中的记录来解决。Excel ODBC驱动程序必须对给定列的数据类型做出假设。驱动程序通过提前读取8条记录并查看找到的数据来做到这一点。然后,它根据所读取的内容决定数据类型。当后续记录证明关于数据类型的假设是错误的时,就会出现问题。Excel电子表格中的一列中有一列包含字符串数据。前8条记录包含短字符串。Excel ODBC驱动程序读取该数据,并假设短字符串数据类型适合于该列。如果后续记录包含更长的字符串。数据类型可能被证明是不合适的,无法存储较长的字符串,并且Excel ODBC驱动程序将引发错误。将带有长字符串的记录移动到数据集的开头,将允许Excel ODBC为列选择更合适的数据类型,这将适用于电子表格中的所有记录。
在所有情况下,技术是安排记录的顺序,以便Excel ODBC驱动程序允许正确选择数据类型。