C#这样读取Excel日期时有问题:

Excel.ApplicationClass excel=new Excel.ApplicationClass();
excel.Application.Workbooks.Open(@"E:\MFGP\ar20061220.xls",new object[]{3} ,new object[]{false},new object[]{5},new object[]{""},new object[]{""},new object[]{false},Excel.XlPlatform.xlWindows,null,new object[]{false},new object[]{true},Excel.XlFileFormat.xlExcel9795,new object[]{true},new object[]{true},new object[]{true});
range=(Excel.Range)excel.Cells[1,2];
Messagebox.Show(range.Value2.ToString());
为什么读出来是一个数值,如2008-08-08读出来是39688,怎样才能读出来是日期格式。

-------------------------------

在EXCEL中把你的日期列的格式设置一下,
设成"文本"型,就不会这样了

-------------------------------

在读excel日期的时候,如果单元格格式设置为date,那么就要注意:这里要做一个判断,如果该单元格是一个double值,那么就要用 DateTime.FromOADate(double.Parse(range.Value2.ToString()));方法获得时间;如果就是一个时间,那么就直接DateTime.Parse(range.Value2.ToString());就可以了。
至于为什么要做这个判断,是因为我做这个的时候发现这个日期值今天读的时候是一个日期值,而第二天就读出来一个double值。我也不知道为什么。
请参考:
http://msdn.microsoft.com/zh-cn/vcsharp/system.datetime.fromoadate.aspx

C#读取Excel单元格中的日期

2012-04-27 8:55

今天写一小程序用来分析某Excel报表,结果在处理日期的时候蛋疼了。

原Excel是这样的:

Excel加载到DataTable以后,日期都变成了这个样子:

看起来很像某偏移量。当然也有一部分日期是正常的:

我尝试用DateTime.Parse直接匹配,结果爆掉了。于是查了下MSDN找到了正确的办法:DateTime.FromOADate(double d) 方法:

d 参数是一个双精度浮点数字,它将日期表示为基础日期(1899 年 12 月 30 日午夜)之前或之后的天数。 d 的符号和整数部分将日期编码为相对于 1899 年 12 月 30 日的正负日偏移量,而 d 的小数部分的绝对值将当天的时间编码为相对于午夜的小数日偏移量。d 必须为负 657435.0 到正 2958466.0 之间的值。

根据我的Excel,我封装了一下转换函数,如下:

01 privateDateTime ConvertExcelDateTimeIntoCLRDateTime(objectvalue)
02 {
03     if(value isDateTime)
04     {
05         returnDateTime.Parse(value.ToString());
06     }
07     else
08     {
09         stringdt = DateTime.FromOADate(Convert.ToInt32(value)).ToString("d");
10         returnDateTime.Parse(dt);
11     }
12 }

这个函数首先判断日期是否能直接转换,因为我需要处理上图中F12列这样的日期。如果不能识别,就调用FromOADate(),将偏移量转换为日期。

于是就OK了,有图有真相:

C#读取Excel日期时间相关推荐

  1. C# 读取Excel日期格式

    C# 读取Excel日期格式 C# 读取Excel日期格式 C# 读取Excel日期格式 读取Excel日期数据,一种方式是在EXCEL中把你的日期列的格式设置一下,设成"文本"型 ...

  2. poi读取Excel日期为数字的解决方法

    这个问题虽然也比较常见,解决办法也比较简单,但是网上有一些代码不全,思路混乱,乱七八糟的办法,容易误导大家,特地来为大家开路 这里分享一下我的一个思路 Maven依赖 <!--POI--> ...

  3. python怎么读出当前时间_Python读取Excel,日期列读出来是数字的处理

    Python读取Excel,里面如果是日期,直接读出来是float类型,无法直接使用. 通过判断读取表格的数据类型ctype,进一步处理. 返回的单元格内容的类型有5种: ctype: 0 empty ...

  4. 读取excel日期 c++_实例9:用Python自动生成Excel档每日出货清单

    公司研发部门每年都需要向税务局提交一份出货清单,以申报研发费用.要求按日期来汇总,每日只要有出货,就需要一份出货单.出货总表包含数百条出货记录.假设一年有200天都出过货,那按照常规的方法,需要从总表 ...

  5. python读取excel日期内容读出来是数字-Python xlrd读取excel日期类型的2种方法

    有个excle表格需要做一些过滤然后写入数据库中,但是日期类型的cell取出来是个数字,于是查询了下解决的办法. 基本的代码结构 复制代码 代码如下: data = xlrd.open_workboo ...

  6. EasyExcel读取Excel日期为数字如何解决

    问题: 使用 EasyExcel 读取 Excel 数据时,表格中的日期自动转化为了一串数字 原因: 因为 Excel 导入的时间是以1900 年为原点的,而数字 34839 和 36577 则是19 ...

  7. python读取excel日期内容读出来是数字-Python读取Excel,日期列读出来是数字的处理...

    Python读取Excel,里面如果是日期,直接读出来是float类型,无法直接使用. 通过判断读取表格的数据类型ctype,进一步处理. 返回的单元格内容的类型有5种: ctype: 0 empty ...

  8. matlab读取格式重复,matlab - 为什么Xlsread以字符串形式读取(日期时间) - 堆栈内存溢出...

    我正在尝试阅读Excel工作表. 在同一台计算机上,我得到不同的结果. 我应该怎么做才能将日期时间读为日期而不是字符串? 我知道以后可以更改它,但是我需要为Octave和Matlab使用相同的代码. ...

  9. phpExcel 正确读取excel表格时间

    利用phpExcel读取excel文件,读取出来的时间列出现5位数字,并不是想要的时间(不知道为啥),在网上搜了一个excelTime的函数可以正确转化时间 品牌网站建设:http://www.uca ...

最新文章

  1. 【译】How to create your own Question-Answering system easily with python
  2. 这 10 道 Java 测试题,据说阿里 P7 的正确率只有 50%
  3. 如何在 Microsoft Visual C# .NET 中实现 Microsoft Excel 自动化
  4. 自然语言处理的未来之路(周明老师,CCF-GRIR,笔记)
  5. matlab2c使用c++实现matlab函数系列教程-load函数
  6. c语言中sprintf函数_在C / C ++中使用sprintf()函数
  7. MAB多臂老虎机/赌博机
  8. OpenCL入门概念
  9. 1.Java学习笔记第一节(尚硅谷视频整理)
  10. nc65 树单据类型教程
  11. BZOJ3709 Bohater 贪心
  12. linux heartbeat rpm,[原]Heartbeat 3.0.3 介绍及rpm
  13. 【源码来袭】使用vue编写国旗头像项目
  14. 2017 清北学堂 Day 6终极考试报告
  15. Calendar获取当前日期,或前几天,或后几天的日期
  16. 这个夏天,我去过阳朔……
  17. LiveMedia视频平台与第三方国标平台级联对接异常断流
  18. CNCERT发布通报:大量家用路由器DNS遭黑客篡改
  19. stm32f407探索者开发板资料
  20. 华为鸿蒙分布,华为鸿蒙开源!

热门文章

  1. 【EMNLP20 论文笔记】HGN:基于分层图网络的多跳阅读理解模型
  2. QGC 地面站中获取电压完整教程(QGC中无法获取APM电压)
  3. 笔记本屏幕30hz_扩展显示-(多屏幕)三屏显示方案全攻略
  4. 关于提升销量和排名,亚马逊、wish、ebay卖家该怎么做?
  5. 中国移动电商APP用户活跃度
  6. ##Windows 10纯净版下载##
  7. 如何写好验收汇报PPT?
  8. Java微信公众号开发之使用拦截器获取粉丝openID
  9. JDK的下载安装以及配置
  10. Unity中文输入法不能输入问题解决