Поскольку вы указываете точный формат данных в строке (yyyy-mm-dd
), Excel должен будет соблюдать его при открытии.AFAIK, Excel не имеет истинного формата по умолчанию, который соответствует тому, что вы ищете.Если вы откроете Excel и укажете формат ячейки, вы можете установить Культуру / Страну, но вам все равно придется выбирать формат - первый обычно использует / в качестве разделителя.
Но если вы хотите использоватьчто в .NET, вы могли бы использовать CultureInfo.DateTimeFormat
, чтобы получить то, что вы, как я думаю, после:
CultureInfo c;
var dt = new DateTime(2019,7,31);
c = new CultureInfo("fr-FR");
Console.WriteLine($"{c}: {c.DateTimeFormat.ShortDatePattern}");
Console.WriteLine(dt.ToString($"{c.DateTimeFormat.ShortDatePattern} (dddd)", c.DateTimeFormat));
Console.WriteLine();
c = new CultureInfo("de-DE");
Console.WriteLine($"{c}: {c.DateTimeFormat.ShortDatePattern}");
Console.WriteLine(dt.ToString($"{c.DateTimeFormat.ShortDatePattern} (dddd)", c.DateTimeFormat));
Console.WriteLine();
c = new CultureInfo("en-EN");
Console.WriteLine($"{c}: {c.DateTimeFormat.ShortDatePattern}");
Console.WriteLine(dt.ToString($"{c.DateTimeFormat.ShortDatePattern} (dddd)", c.DateTimeFormat));
Console.WriteLine();
даст вам это в выходных данных:
fr-FR: dd/MM/yyyy
31/07/2019 (mercredi)
de-DE: dd.MM.yyyy
31.07.2019 (Mittwoch)
en-EN: M/d/yyyy
7/31/2019 (Wednesday)
Для использования вExcel сделать это:
[TestMethod]
public void Culture_Info_Data_Format_Test()
{
///9772062/est-li-sposob-otformatirovat-yacheiku-daty-v-excel-s-invariantnoi-kulturoi-kak-v-c
var fileInfo = new FileInfo(@"c:\temp\Culture_Info_Data_Format_Test.xlsx");
if (fileInfo.Exists)
fileInfo.Delete();
using (var pck = new ExcelPackage(fileInfo))
{
var dt = new DateTime(2019, 7, 31);
var workbook = pck.Workbook;
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Column(1).Width = 50;
var c = new CultureInfo("fr-FR");
var format = $"[$-fr]{c.DateTimeFormat.ShortDatePattern} (dddd)";
worksheet.Cells[1, 1].Value = dt;
worksheet.Cells[1, 1].Style.Numberformat.Format = format;
c = new CultureInfo("de-DE");
format = $"[$-de]{c.DateTimeFormat.ShortDatePattern} (dddd)";
worksheet.Cells[2, 1].Value = dt;
worksheet.Cells[2, 1].Style.Numberformat.Format = format;
c = new CultureInfo("en-EN");
format = $"[$-en]{c.DateTimeFormat.ShortDatePattern} (dddd)";
worksheet.Cells[3, 1].Value = dt;
worksheet.Cells[3, 1].Style.Numberformat.Format = format;
pck.Save();
}
}
, что дает это:
![enter image description here](https://i.stack.imgur.com/9Tg3b.png)