从EXCEL中读取文本,数值型数据都很简单,EXCEL没有做其他转换,
可是读取日期数据就出现了一个问题:
EXCEL保存日期数据实际上存放的是时间戳,从1900年开始算起。
也就是说 1900-1-1 在EXCEL中表示为 1 。
OK,明白了这个原理之后就可以开始操作了 :
思路参考
http://blogs.msdn.com/eric_carter/archive/2004/08/14/214713.aspx
不过这篇文章的计算方式和我有些出路:
1. 不能将从 Excel 文件中 读取到的日期数据直接转换为 DateTime, 会抛出异常
2. 应当从1899-12-31开始算而非1900-01-01
3. 1900-03-01 之前的数据不用再加1,而之后的才要加
不知道是 .net 版本的问题还是 Excel ???
ps: 我用 .net 1.1+Excel 2003
以下贴出全部代码:
先添加引用EXCEL.dll
再新建一个EXCEL文件,在sheet1中 A1,A2,A3 分别输入 1900-1-1 , 1900-2-28, 1900-3-1
以下是 C# 代码: