【发布时间】:2012-08-24 08:36:16
【问题描述】:
我正在使用 Office 2003 文档 (.xls) 开发 VS2008 .NET3.5。我正在使用 Microsoft.Office.Interop.Excel 访问文档。
这很适合我的目的,但每当我尝试获取日期时都会失败。
我使用的方式是最常见的:
object date= xlWorkSheet.get_Range("E" + i, "E" + i).Value2;
double doubleDate = double.Parse(date);
DateTime finallyDate = DateTime.FromOADate(doubleDate);
我存储的日期是 1961 年 1 月 12 日(意大利语表示 12 月 1 日,如果我打开 excel,它会告诉我 1961 年 12 月 1 日)。
当我运行我的应用程序时,恰好 double 的值变为 15011.0,而 finallyDate 值是 2/4/1941 时,这是不对的!
我该如何解决这个问题?有什么方法可以转换(也可以手动)该 15011 号码?
谢谢!!
【问题讨论】:
-
在解析之前,
date本身的值究竟是什么? (鉴于date被声明为object...,我很惊讶上面的代码甚至可以编译...) -
@JonSkeet 使用 Excel 互操作(在可以使用动态的 C#4 之前)我认为所有内容都作为对象返回。要使用赋值运算符左侧的对象以外的任何对象,您需要根据需要在右侧进行强制转换
-
@JMK:当然,我对第一个语句没意见 - 但没有
double.Parse(object)方法... -
@JonSkeet 对不起,我没有看到,我只是测试了它,你当然是对的,它无法编译!
-
单元格的值为:12/1/1961..
标签: c# excel date type-conversion