首页 / 问答 / [EPPlus]C#/.NET应用程序编程开发中使用EPPlus时如何格式化日期的格式呢?

[EPPlus]C#/.NET应用程序编程开发中使用EPPlus时如何格式化日期的格式呢?

.NET C# 日期 EPPlus .NET Core 2.9K 次浏览
0

在C#/.NET应用程序编程开发中,使用EPPlus时需要格式化某列的日期格式,如下:

FileInfo info = new FileInfo(path);
using (ExcelPackage package = new ExcelPackage(info))
{
      ExcelWorksheet ws = package.Workbook.Worksheets.Add(sheetName);
      ws.Cells[3, 1].Style.Numberformat.Format = "yyyy-mm-dd";
      ws.Cells["A3"].Formula = "=DATE(2014,10,5)";
}

但输出的结果为并不是想要的日期格式,问题出在哪里呢,使用EPPlus格式化日期的正确姿势又是如何的呢?

回复 [×]
提交评论
请输入评论内容

3 个回答

  • 0

    使用EPPlus格式化时,可以设置单元格式的样式属性Style.Numberformat.Format,如下:

    ws.Cells["A3"].Style.Numberformat.Format = "yyyy-mm-dd";
    ws.Cells["A3"].Formula = "=DATE(2014,10,5)";
    
    Rector的个人主页

    Rector

    2021-01-13 回答

    • 0

      或者把某个集合中包含日期的属性列都进行日期格式化,如下:

      var dateColumns = from DataColumn d in dt.Columns
                        where d.DataType == typeof(DateTime) || d.ColumnName.Contains("Date")
                        select d.Ordinal + 1;
      
      foreach (var dc in dateColumns)
      {
          worksheet.Cells[2, dc, rowCount + 2, dc].Style.Numberformat.Format = "yyyy-MM-dd HH:mm:ss";
      }
      
      Rector的个人主页

      Rector

      2021-01-13 回答

      • 0

        这里还提供一个格式化泛型集合中所有日期类型的列的静态扩展方法,如下:

        public static class EpPlusExtensions
        {
            public static void Load<T>(this ExcelWorksheet worksheet, IEnumerable<T> collection)
            {
                worksheet.Cells["A1"].LoadFromCollection(collection, true);
        
                var properties = typeof(T).GetProperties();
        
                for (var i = 0; i < properties.Length; i++)
                {
                    if (new []{typeof(DateTime), typeof(DateTime?)}.Contains(properties[i].PropertyType))
                    {
                        worksheet.Column(i + 1).Style.Numberformat.Format = "m/d/yyyy";
                    }
                }
            }
        }
        
        Rector的个人主页

        Rector

        2021-01-13 回答

        我来回答