Стандартный формат для ячейки даты и времени в Excel с использованием EPPlus и C# - PullRequest
0 голосов
/ 16 апреля 2020

Использование EPPlus и C# Мне нужно записать текущую дату в ячейку и отформатировать ее так, чтобы Excel использовал региональные настройки пользователя для отображения значения. Это специальный формат, который Excel отображает со звездочкой в ​​диалоговом окне форматирования ячейки и который помечен как «Форматы даты, начинающиеся со звездочки (*), реагируют на изменения региональных настроек даты и времени, указанных для операционной системы». Этого можно добиться в самом Excel, выбрав соответствующий формат в диалоговом окне формата или просто выбрав «Дата» в раскрывающемся списке числового формата.

После некоторой попытки / ошибки я смог указать эти режимы, используя следующие форматы:

  • Короткая дата: мм-дд-ггг
  • Длинная дата: [$ -F800] дддд \, \ мммм \ дд \, \ гггг
  • Время: [$ -F400] ч: мм: сс \ AM / PM

Ниже приведен пример кода:

using (var p = new ExcelPackage())
{
    const string ShortDate = "mm-dd-yy";
    const string LongDate = "[$-F800]dddd\\,\\ mmmm\\ dd\\,\\ yyyy";
    const string Time = "[$-F400]h:mm:ss\\ AM/PM";

    var ws = p.Workbook.Worksheets.Add("MySheet");
    ws.Cells["A1"].Value = DateTime.Now.ToOADate();
    ws.Cells["A1"].Style.Numberformat.Format = ShortDate;
    p.SaveAs(new FileInfo(@"myworkbook.xlsx"));
}

Обратите внимание, что формат времени работает правильно и для региональных форматирует без суффикса AM / PM, потому что он использует [$ -F400], который является недокументированным специальным форматом, который Excel использует для идентификации текущего формата времени.

Что мне не хватает сейчас, так это как отформатировать ячейку с датой и временем, оба зависят от региональных настроек. Я не смог добиться этого путем объединения вышеуказанных форматов и ищу альтернативные варианты. Я обнаружил, что некоторые люди говорят об установке формата с помощью его цифры c id, но они предназначены для интеграции взаимодействия с Excel и, похоже, не поддерживаются в EPPlus.

Обобщенные вопросы:

  • Есть ли другой способ отформатировать ячейки для отображения даты, времени или даты и времени в региональном формате пользователя?
  • Можно ли отформатировать одну ячейку для отображения даты и времени в региональном формате пользователя с помощью EPPlus и как?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...