[EPPlus]C#/.NET应用程序编程开发中使用EPPlus时如何格式化日期的格式呢?
2.9K 次浏览
在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 个回答
-
或者把某个集合中包含日期的属性列都进行日期格式化,如下:
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"; }
-
这里还提供一个格式化泛型集合中所有日期类型的列的静态扩展方法,如下:
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"; } } } }