当前位置: 代码迷 >> VBA >> windows读取Excel资料出错。System.ArgumentException: 不是合法的 OleAut 日期
  详细解决方案

windows读取Excel资料出错。System.ArgumentException: 不是合法的 OleAut 日期

热度:2562   发布时间:2013-02-26 00:00:00.0
windows读取Excel文件出错。System.ArgumentException: 不是合法的 OleAut 日期。
我用C#写了个Windows程序,用于获取EXCEL文件中的数据。一个EXCEL文件里有40多个Sheet页,其中两个读不出数据。提示下面的错误。每个Sheet页几乎都是不同格式的数据,把出错的Sheet页的内容,复制出来,然后保存时,选择性粘贴,数值。再读取就可以了。我看不出这个Sheet页的数据有什么特别的地方。
百度不到相关的信息,问下坛子里的朋友有没有谁见过的,知道这个是什么原因的,谢谢啦。

System.ArgumentException: 不是合法的 OleAut 日期。
   在 System.DateTime.DoubleDateToTicks(Double value)
   在 System.Data.OleDb.ColumnBinding.Value_DATE()
   在 System.Data.OleDb.ColumnBinding.Value()
   在 System.Data.OleDb.OleDbDataReader.GetValues(Object[] values)
   在 System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
   在 System.Data.ProviderBase.SchemaMapping.LoadDataRow()
   在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
   在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
   在 System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
   在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   在 GetPhoneNumber.Form1.btnUpload_Click(Object sender, EventArgs e) 位置 D:\UserData\000000\我的文档\Visual Studio 2005\Projects\TestSolution\GetData\Form1.cs:行号 107

部分代码:

string sql = "select * from [" + sheetName + "]";
DataTable dt = new DataTable();//每个SHEET页,当一个表格
OleDbDataAdapter myda = new OleDbDataAdapter(sql, cnnxls);
                            
myda.Fill(dt);//获取当前SHEET页的内容,放在表格对象中。------这行报错
                            

------解决方案--------------------------------------------------------
周末没人逛坛子?
------解决方案--------------------------------------------------------
单元格格式不正确,应该是excel格式问题。
------解决方案--------------------------------------------------------
恩。肯定是格式,现在就是不知道,是具体的哪个格式,而且我现在因为这个格式,整个Sheet页无法读取。我想处理也处理不了。

我想要弄个法子,避免获取整个SHEET页时出错。2楼的有没有什么好想法,说下。

客户给的数据就是这样的,不可能说他再修改下,再给我们的,他就是懒得弄,所以才让我们开发这个功能的。
------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
用aspose.cells试试 操作简单
------解决方案--------------------------------------------------------
引用:
用aspose.cells试试 操作简单

收费的组件哦,不行啦。。版权问题的东西不能碰的。
不是我个人弄东西玩,我是开发个东西要提交给客户的。
  相关解决方案