我已使用查询表将带分隔符的 .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);
我得到一个异常(exception),但是上面的代码说
"String was not recognized as a valid DateTime."
现在在工作表的屏幕上,该字段中的数据显示为“07/09/1972”
但是在调试器中我得到的值是“26489”,这似乎是异常的来源,因为 c# 无法将其转换为 DateTime 对象。
有人知道这里发生了什么以及如何最好地解决它吗?
最佳答案
从 Office 转换时,必须使用 DateTime.FromOADate
方法。这是因为 Office 使用 OLE 自动化日期
,这是一种计算浮点值的格式,从 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/