VSTO向Excel单元格写入Date类型
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类型的天数。