读书人

windows读取Excel资料出错。System.Ar

发布时间: 2012-12-17 09:31:40 作者: rapoo

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导入数据库后再操作吧。。。

读书人网 >VBA

热点推荐