Установите формат ячеек, созданных LoadFromCollection (epplus), используя аннотацию данных - PullRequest
0 голосов
/ 04 июня 2018

Я использую eeplus для создания электронной таблицы Excel, например:

using (var pck = new ExcelPackage())
{
  var ws = pck.Workbook.Worksheets.Add("Customers");
  ws.Cells["A1"].LoadFromCollection(customers, PrintHeaders: true);

  var ms = new System.IO.MemoryStream();
  pck.SaveAs(ms);

  ms.WriteTo(Response.OutputStream);
}

Класс клиента имеет такие свойства, как

[DisplayName("Customer creation date")]
public DateTime Created { get; set; }

DisplayName, кажется, что удостоился чести, поэтому самый верхнийстрока будет читать Customer creation date, но содержимое ячейки будет отображаться как 43257,41667.

. Я бы хотел, чтобы ячейки имели формат 2018-04-05.

. Могу ли я это сделать?будут аннотации данных?Я пробовал оба

[DisplayName("Customer creation date")]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime Created { get; set; }

и

[DisplayName("Customer creation date")]
[DataType(DataType.Date)]
public DateTime Created { get; set; }

, но содержимое ячейки остается прежним.

1 Ответ

0 голосов
/ 05 июня 2018

Нет, EPPlus не форматирует ваши данные в соответствии с аннотациями данных.Дата форматируется в виде целых чисел, поэтому вы должны указать столбец, который вы хотите отформатировать как

ws.Column(colPosition+1).Style.Number.Format="yyyy-mm-dd";

Подробности можно найти здесь: https://github.com/JanKallman/EPPlus/wiki/Formatting-and-styling

https://codereview.stackexchange.com/questions/139569/ensuring-specific-columns-in-an-excelworksheet-format-as-shortdate

...