我已使用querytable将定界的.doc文件中的数据加载到Excel工作簿应用程序中。

随后,我尝试遍历工作表上的数据并将数据保存到特定的变量类型中,例如:

string gender = range.Rows.Cells[index + 7].FormulaLocal;
DateTime birth_date =Convert.ToDateTime(range.Rows.Cells[index + 8].FormulaLocal);
int SSN = Convert.ToInt32(range.Rows.Cells[index + 9].FormulaLocal);


我得到一个例外,但是上面的代码说

"String was not recognized as a valid DateTime."


现在在工作表的屏幕上,该字段中的数据显示为“ 07/09/1972”

但是,在调试器中,我得到的值为“ 26489”,这似乎是异常的来源,因为c#无法将其转换为DateTime对象。

任何人都知道这里发生了什么以及如何最好地解决它?

最佳答案

从Office转换时,必须使用DateTime.FromOADate方法。这是因为Office使用OLE Automation date(一种计算浮点值的格式),对从1899年12月最后一天开始的天数进行计数。小时和分钟表示为小数天,因此将26489值加了一些小数会导致时间戳记也代表小时,分钟和秒。

DateTime d = DateTime.FromOADate(26489);
Console.WriteLine(d);


将输出

1972-07-09 00:00:00

关于c# - 在电子表格上以“mm/dd/YYYY”格式显示为日期的数据在C#中显示为数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20616406/

10-13 00:46