C# 使用excel简介设置单元格更改日期
我试图在excel文件中输入日期值 例如 “05/07/19”(2019年7月5日),excel中单元格的日期格式设置为“dd-MM-yy”(计算机的区域设置也相同)。但当我的代码将值输入excel时,值将更改为“07-05-19”(2019年5月7日) 我希望它保持为“05-07-19”,并且Excel也应该把它当作日期。< /P> 我尝试了不同的方法将值设置为excelC# 使用excel简介设置单元格更改日期,c#,excel-interop,C#,Excel Interop,我试图在excel文件中输入日期值 例如 “05/07/19”(2019年7月5日),excel中单元格的日期格式设置为“dd-MM-yy”(计算机的区域设置也相同)。但当我的代码将值输入excel时,值将更改为“07-05-19”(2019年5月7日) 我希望它保持为“05-07-19”,并且Excel也应该把它当作日期。< /P> 我尝试了不同的方法将值设置为excel const string DATE = "05/07/19"; Application a
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,如果我使用目标framework.Net 3.5运行代码,它将按预期工作
但是如果我将目标框架更改为.NET4.6,同样的代码也会出现问题
我们是否知道.NET4.6是否有兼容的互操作 请设置相关单元格的数字格式。 例如,请执行以下操作:
range2.NumberFormat = "DD/MM/YYYY";
理想情况下,excel会根据默认设置对值做出反应,如果我们希望在传递值时保留自己的格式,我们必须先准备目标,然后再输入值 我想说的是,代码应该是:
range2.Numberformat="dd-mm-yy";
range2.Value=DATE;
我想,但是正如我在这个问题中提到的,我想考虑当前设置为“代码>编号格式< /代码>的内容。我的代码应该相应地运行。此外,根据您的建议,我尝试了
range2.NumberFormat=“DD/MM/YYYY”代码>range2.单元格[2,1]=日期代码>但现在输出为“07-05-2019”!日期仍在更改。>>excel中单元格的日期格式设置为“dd-MM-yy”。这是在您写入excel之前还是在您完成写入之后发生的?@neverholes我甚至在运行代码之前就设置了单元格的日期格式。但是,请检查我的更新。请尝试一下Assaf的解决方案:。除此之外,您的做法是正确的,这可能是一个互操作版本兼容性问题。@Neverhopess是的,如果我有一个DateTime
对象,那么他的解决方案是有效的。此外,在这种情况下,我可以执行=日期(年、月、日)
。