【发布时间】:2020-06-15 19:25:52
【问题描述】:
我正在尝试将日期值输入到 Excel 文件中。
例如
“05/07/19”(2019年7月5日),excel中单元格的日期格式设置为“dd-MM-yy”(电脑的区域设置也一样)。但是当我的代码将值输入 excel 时,值将更改为“07-05-19”(2019 年 5 月 7 日)。
我希望它保持为“05-07-19”,并且 excel 应该将其视为日期。
我尝试了不同的方法将值设置为 excel,
const string DATE = "05/07/19";
Application app = new Application();
Workbook workBook = app.Application.Workbooks.Open(FILE_PATH);
Worksheet sheet = workBook.Sheets[1];
Range range = sheet.get_Range("A1");
range.set_Value(XlRangeValueDataType.xlRangeValueDefault, DATE);
Range range2 = app.get_Range("A1", "A2");
range2.Cells[2, 1] = DATE;
Range range3 = app.get_Range("A3", "A3");
range3.Value = DATE;
Range range4 = app.get_Range("A4", "A4");
//Of course, It is not setting the value as a Date but text.
range4.Value = new string[] { DATE };
我希望我的代码按照单元格的格式运行。如果输入可以适合日期(基于日期的单元格格式),则应将其视为日期,否则仅视为文本。 (用户手动输入数据时excel的行为方式)
更新:
到目前为止,我知道 excel interop 的运行时版本(文件版本:15.0.4420.1017)是 v2.0,如果我使用目标框架 .Net 3.5 运行我的代码,它会按预期工作。
但如果我将目标框架更改为 .Net 4.6,同样的代码会出现问题
我们知道,是否有可用于 .Net 4.6 的兼容互操作?
【问题讨论】:
-
>> 并且excel中单元格的日期格式设置为“dd-MM-yy” 这是在您写入excel之前还是在您完成写入之后发生的?
-
@NeverHopeless 我什至在运行代码之前就设置了单元格的日期格式。但是,请检查我的更新。
-
您能否尝试一下 Assaf 的解决方案:stackoverflow.com/questions/3310800/…。除了您走在正确的轨道上之外,这可能是互操作版本兼容性问题。
-
@NeverHopeless 是的,如果不知何故我有一个
DateTime对象,那么他的解决方案有效。另外,在这种情况下我可以做=Date(year,month,day)。
标签: c# excel-interop