使用C#和VSTO,可以使用以下代码设置Excel中单元格的类型:
然后,将获取的
我的问题是:是否存在一些通用的
worksheet.Cells[i, j].NumberFormat = magicString;
在这里,worksheet
是Microsoft.Office.Interop.Excel.Worksheet
类的一个对象,i
是单元格的行号,j
是单元格的列号,magicString
是定义单元格类型的字符串(注意:Excel将类型称为“格式”,但下面我使用了“类型”一词)。
以下magicString
定义以下Excel类型:
string magicString = "";
- 定义“通用”Excel类型;string magicString = "@";
- 定义“文本”Excel类型;string magicString = "0%";
- 定义“百分比”Excel类型。
当我想设置“日期”Excel类型时,情况会更加复杂。这种复杂性与Excel的本地化以及Windows系统的本地化有关。
例如,我有俄语版的Excel(特别是所有类型在Excel中都是用俄语编写的),并且我的Windows系统具有以下短日期格式:“dd.MM.yyyy”(可以在控制面板>区域和语言>格式中找到此设置)。我有英文版的Windows,但这完全没有任何影响。
因此,如果我在代码中使用以下magicString
,则单元格的类型将设置为短日期类型:
string magicString = "ДД.ММ.ГГГГ";
- 定义“日期”(或更准确地说是“短日期”)Excel类型;
如您所见,在这里,magicString
是俄语字母(因为Excel是俄语的)和Windows设置中的格式的组合。
如果我使用等于“DD.MM.YYYY”(即英文字母)的magicString
,则会出现错误。
因此,如果我希望我的Excel插件能够为所有(英语、俄语、德语和所有其他)版本的Excel以及Windows的所有本地化设置正确设置“短日期”类型,则必须能够使用某些通用的magicString
,该字符串独立于两个提到的因素。
作为一种选择,我可以使用以下代码从Windows设置中读取短日期格式:
string shortDatePattern = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
然后,将获取的
shortDatePattern
字符串中的字母替换为与 Excel 语言相对应的字母。然而,这种方式对我来说似乎太复杂了。我的问题是:是否存在一些通用的
magicString
,适用于所有 Excel 语言和所有 Windows 本地化设置,就像其他 Excel 类型(如“常规”,“文本”和“百分比”)一样?或者,也许有人知道其他简单的方法来实现这种普遍性?