首页 > 解决方案 > Excel VSTO 中日期的 range.set_Value 格式

问题描述

以下代码将日期值放入 excel 中,但由于某种原因,它们不会自动格式化为日期。如果我手动输入这些日期 - 它们会自动格式化。Excel 在具有欧洲区域设置的 Windows 上运行。如何让 Excel 自动格式化日期?我无法明确应用格式,因为我放入 excel 的范围可能包含不同数据类型的列,并且出于性能原因必须一次性插入整个范围。

string[,] arr = new string [2, 2];
            arr[0, 0] = "Date";
            arr[0, 1] = "DateTime";
            arr[1, 0] = "21/12/2018";
            arr[1, 1] = "26/12/2019";
            Range rng = Globals.ThisAddIn.Application.ActiveSheet.Range["A1:B2"];
            rng.set_Value(XlRangeValueDataType.xlRangeValueDefault, arr);

更新:我实际上已将其范围缩小到以下内容:

string dt = DateTime.Now.ToString(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat); 
worksheet.Range["A1"].Value = dt; 

奇怪的是,字符串是根据用户的语言环境设置格式化的,但是当我将它插入到第二行的 excel 中时——Excel 出于某种原因将其转换为美国格式。因此,在 Windows 中设置欧洲日期格式时,如果字符串是“11/03/2019”,我在运行代码后在 Excel 中看到的是“03/11/2019”。

标签: c#vsto

解决方案


推荐阅读