EPPlus игнорируя доли секунды? - PullRequest
0 голосов
/ 17 сентября 2018

Использование EPPlus для записи содержимого сетки данных в файл Excel. Эта функция:

public static void FormatExcelCell(OfficeOpenXml.ExcelRange cellExcel,
                                   object cellValue, 
                                   System.Type cellValueType, 
                                   bool UseAlternateDateFormat = false)
{
    cellExcel.Value = cellValue;
    if (cellValue.ToString() != Constants.ValueForMissingTag)
    {
        if (cellValueType == typeof(System.DateTime))
            cellExcel.Style.Numberformat.Format = 
            UseAlternateDateFormat ?
            Constants.FormatDateTimeAlternateExport : 
            Constants.FormatDateTime;
    }
    else
    {
        cellExcel.Style.Fill.PatternType = 
                                    OfficeOpenXml.Style.ExcelFillStyle.Solid;
        cellExcel.Style.Fill.BackgroundColor.SetColor
                                              (Constants.ColorForMissingTag);
    }
}

Если строка формата установлена ​​на «гггг-ММ-дд ЧЧ: мм: сс.фф», то даты в файле Excel выглядят следующим образом: 2018-06-18 15: 45: 25.ff

Если строка формата установлена ​​на «гггг-ММ-дд ЧЧ: мм: сс.00», то даты в файле Excel выглядят следующим образом: 2018-06-18 15: 45: 25,00

Удаляет ли EPPlus долю секунды (я знаю, что она есть, потому что я вижу ее в сетке данных), или она каким-то образом искажает строку формата? Это ошибка? Есть ли обходной путь?

Спасибо.

Обновление: обновлен EPPlus с 4.1.0.1 до 4.5.2.1 и добавлен OpenXML, который ранее не был необходим; по-прежнему создает неправильные форматы даты и времени, как указано выше.

1 Ответ

0 голосов
/ 20 сентября 2018

Вот как я это делаю в своем коде.Это метод расширения.

    public static void SetCellDateTimeWithMsValue(this ExcelRange cell, DateTime? value)
    {
        cell.Style.Numberformat.Format = "yyyy-MM-dd HH:mm:ss.000";
        if (!value.HasValue) return;
        cell.Value = value.Value;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...