VSTO向Excel单元格写入Date类型

本文介绍了使用C#处理Excel中的日期数据时遇到的问题及解决方案。当C#向Excel写入日期时,可能会出现日期被转换为double类型的显示错误。文章提供了一种通过将日期格式化为字符串再写入的方法来解决此问题,并讨论了如何从Excel读取日期并转换为C#的DateTime类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#向Excel中写入Date时候,会自动转换成Excel的Date类型。Range range = ...; range = System.DateTime.Now; 如果用这种方式赋值的话,虽然自动转换成了Excel的Date类型,但是实质上你会看到在Excel中显示的是double类型的一个值。因为在Excel中本质上Date是以double类型存在的,是从1900年1月0日到系统当前日期之间的所有天数。解决这个问题的方法是,把C#中的Date格式化成字符串,把这个字符串赋给Excel,此时Excel会自动把这个字符串转为Date类型,而且显示出来也是2013-03-13的样子。range=System.DateTime.Now.ToString("yyyy-MM--dd")就可以了。

另外的一种情况,如果C#从Excel中读取数据,比如2013-03-13,然后C#需要转换成自己的DateTime类型,Convert.ToDate(range.Value); 进行操作后,比如说加一天,然后在写回到Excel中的时候,也要注意格式化到字符串的情况,否则依然是一个double类型的天数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值