Использование 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 и как?