c# - 在电子表格中以 'mm/dd/YYYY' 格式显示为日期的数据在 C# 中显示为数字

标签 c# .net

我已使用查询表将带分隔符的 .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/

相关文章:

c# - 获取类实现的接口(interface)

c# - 使用 P/Invoke 编码双参数

c# - AppDomain.Load() 的有趣错误

c# - 从 .XSD 文件中提取枚举数据

c# - 在单元测试中模拟对话框

c# - 我如何摆脱这个goto?

c# - StyleCop-我的输出在哪里?

c# - 如何区分 "real"邮件附件和html邮件中的图片?

c# - 从带有尾随垃圾的字符串中解析一个整数

.net - 分页选择,在数据库上或在 web 应用程序中