Jor*_*dan 3 c# format excel types date
使用 C# 和 VSTO,可以使用以下代码设置 Excel 中单元格的类型:
\n\nworksheet.Cells[i, j].NumberFormat = magicString;\nRun Code Online (Sandbox Code Playgroud)\n\n,其中worksheet是类的对象Microsoft.Office.Interop.Excel.Worksheet,i是单元格的行号,j是单元格的列号,magicString是定义单元格类型的一些字符串(注意:Excel 将类型称为format,但下面我使用词类型)。
以下magicString定义了以下 Excel 类型:
string magicString = "";- 定义“常规”Excel 类型;string magicString = "@";- 定义“文本”Excel 类型;string magicString = "0%";- 定义“百分比”Excel 类型。当我想设置“日期”Excel类型时,情况会更复杂。复杂程度与Excel的本地化和Windows系统的本地化有关。
\n\n因此,例如,我有一个俄语版本的 Excel(特别是,所有类型都是用俄语编写的 Excel),而我的 Windows 系统具有以下短日期格式:“dd.MM.yyyy”(可以找到此设置在控制面板 > 区域和语言 > 格式中)。我有英文版的 Windows,但这完全不起作用。
\n\n因此,如果我magicString在代码中使用以下内容,单元格的类型将设置为短日期类型:
string magicString = "\xd0\x94\xd0\x94.\xd0\x9c\xd0\x9c.\xd0\x93\xd0\x93\xd0\x93\xd0\x93";- 定义“日期”(或更准确地说,“短日期”)Excel 类型;正如您所看到的,这里magicString是俄语字母(俄语 - 因为 Excel 是俄语)和Windows 设置中设置的格式的组合。
如果magicString我使用magicString等于“DD.MM.YYYY”(即英文字母)代替这个,则会出现错误。
因此,如果我希望我的 Excel 加载项能够为所有(英语、俄语、德语和所有其他)版本的 Excel 以及Windows的所有本地化设置正确设置“短日期”类型,我有能够使用一些通用的magicString,即独立于提到的两个因素。
作为一个选项,我可以使用以下代码从 Windows 设置中读取短日期格式:
\n\nstring shortDatePattern = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;\nRun Code Online (Sandbox Code Playgroud)\n\n然后将得到的shortDatePattern字符串中的字母替换为Excel语言对应的字母。然而,这种方式在我看来太复杂了。
我的问题是:是否存在对所有 Excel 语言和magicString所有 Windows 本地化设置都有效的通用性,就像其他 Excel 类型(如“常规”、“文本”和“百分比”)一样?或者,也许有人知道其他简单的方法来达到这种普遍性?
你应该能够这样做:
\n\nApplication xlApp = new Application();\nWorkbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);\nWorksheet ws = wb.Worksheets[1];\n\nvar yearCode = xlApp.International[XlApplicationInternational.xlYearCode];\nvar monthCode = xlApp.International[XlApplicationInternational.xlMonthCode];\nvar dayCode = xlApp.International[XlApplicationInternational.xlDayCode];\n\nws.Cells[1, 1].NumberFormat = string.Format("{0}{1}.{2}{3}.{4}{5}{6}{7}", dayCode, dayCode, monthCode, monthCode, yearCode, yearCode, yearCode, yearCode);\nRun Code Online (Sandbox Code Playgroud)\n\n上面Application有财产International。您可以使用XlApplicationInternational枚举来查询它。以我xlYearCode为例\xc3\xa9。那应该适合\xd0\x93你。
之后,您可以NumberFormat使用之前查询的格式代码来构造您的。