我正在尝试在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是否有兼容的互操作性?
答案 0 :(得分:0)
请为相关单元格设置数字格式。 例如,执行以下操作:
range2.NumberFormat = "DD/MM/YYYY";
答案 1 :(得分:0)
理想情况下,excel对基于默认设置的值做出反应,如果我们希望在传递值时保留自己的格式,则必须先准备目标,然后放置值。
我想说的代码应该是这样的:
range2.Numberformat="dd-mm-yy";
range2.Value=DATE;