首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

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

2012-12-17 
windows读取Excel文件出错。System.ArgumentException: 不是合法的 OleAut 日期。我用C#写了个Windows程序,

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试试 操作简单

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


[解决办法]
顶上去。
[解决办法]
設定,當遇到有問題的sheet的時,全選並清空單元格的格式,再讀取!!
[解决办法]

引用:
設定,當遇到有問題的sheet的時,全選並清空單元格的格式,再讀取!!

怎么设定?若是手动的选择这些行的数据,拷贝出来,再粘贴,是可以读取的。就是CTRL+A拷贝粘贴,不能读取。
你说的是程序执行过程中,读取出错了,就程序中操作清除数据中的格式吗?
[解决办法]
看看 有时间的值 刚刚做过 一个 也报了个问题 
我的问题是在Excel里面有个只有时分秒的时间,把这个时间读出来 C# 会自动加上一个年 再往数据库插就会报错
[解决办法]
最后楼主怎么解决的  日期为什么是不合法的啊  怎么修改 
[解决办法]
看了以后我的问题解决了,以后最好还是把excel导入数据库后再操作吧。。。

热点排行