EPPlus忽略小数秒?

时间:2018-09-17 19:34:15

标签: c# datetime epplus

使用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);
    }
}

如果格式字符串设置为“ yyyy-MM-dd HH:mm:ss.ff”,则Excel文件中的日期如下所示:2018-06-18 15:45:25.ff

如果格式字符串设置为“ yyyy-MM-dd HH:mm:ss.00”,则Excel文件中的日期如下所示:2018-06-18 15:45:25.00

EPPlus是去除一秒的小数(我知道它在那里是因为我可以在数据网格中看到它),还是它以某种方式破坏了格式字符串?这是错误吗?有解决方法吗?

谢谢。

更新:将EPPlus从4.1.0.1更新到4.5.2.1,并添加了以前不需要的OpenXML;仍然会产生上述错误的日期时间格式。

1 个答案:

答案 0 :(得分:0)

这是我在代码中的处理方式。这是一种扩展方法。

    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;
    }