gpt4 book ai didi

c# - DateTime 从 XLS 到 C# 转换失败

转载 作者:行者123 更新时间:2023-12-04 22:09:28 26 4
gpt4 key购买 nike

我正在使用 Office 2003 doc (.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 号码?

谢谢!!

最佳答案

获取 Value 属性而不是 Value2,然后您将能够使用 Date 对象。您可能需要将其转换为 (DateTime)。

使用 Value2 得到的是 Date 的浮点值。

例如,查看下面的电子表格,其中 A1 包含日期:

Spreadsheet

然后在 Excel 中,添加对 Microsoft.Office.Interop.Excel 的引用,并像这样获取 Value 和 Value2 属性:

var excel = new Excel.Application();

var workbook = excel.Workbooks.Open(@"C:\Test\Test.xlsx");
var worksheet = (Excel.Worksheet)workbook.Sheets[1];

Excel.Range range = worksheet.get_Range("A1");

var rangeAsValue = range.Value;
var rangeAsValue2 = range.Value2;

Console.WriteLine(rangeAsValue);
Console.WriteLine(rangeAsValue2);

Console.ReadLine();

我得到这个输出:

Output

有趣的是,如果您在 .Net 4.5 应用程序中尝试此操作,它仍然有效,但类型为 var被解析为 rangeAsValue 的动态和 rangeAsValue2 ,你就会失去智能。

关于c# - DateTime 从 XLS 到 C# 转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12182935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com