在 C# 中使用 EPPLUS 设置列数据格式
Set Column Data Format using EPPLUS in C#
问题
当我使用 EPPLUS
库导出 Microsoft Excel spreadsheet
时,我需要同时设置列的数据格式和单元格格式,以便 Microsoft Excel 中的结果日期Microsoft Excel's formulas
可以识别处理日期和时间的电子表格。
尝试了什么
我可以使用以下方法轻松设置单元格的格式:
currentWorkSheet.Cells["L" + currentRowNumber.ToString()].Style.Numberformat.Format = "m/d/yyyy";
currentWorkSheet.Cells["L" + currentRowNumber.ToString()].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right;
问题是,即使使用此数字格式和样式,单元格中的日期仍然无法识别为日期,它只是 格式化 为日期。
经过研究,我发现我需要将列设置为具有 "Date" 数据,如下图所示:
我尝试如图所示设置列的数据类型,但这不起作用:
currentWorkSheet.Column(10).Style.Numberformat.Format = "Date";
如何使列的数据类型成为日期?
我试过了,我发现,如果我输入的日期格式与系统中设置的完全一样,那么 Excel 会将其视为日期值类型,否则将其视为用户定义的。我的系统日期格式是 "dd.MM.yyyy" 并且由于 Excel 文件单元格 "A3" 中的此代码具有日期格式,单元格 "A2" 具有用户定义。
你可以看看这个。
我的测试用例是:
using (ExcelPackage testFile = new ExcelPackage(new System.IO.FileInfo(@"c:\Data\test.xlsx")))
{
ExcelWorksheet testSht = testFile.Workbook.Worksheets[1];
testSht.Cells[1, 1].Value = new DateTime(2017, 1, 1);
testSht.Cells[2, 1].Style.Numberformat.Format = "dd-mm-yyyy";
testSht.Cells[2, 1].Formula = "=Date(" + DateTime.Now.Year + "," + DateTime.Now.Month + "," + DateTime.Now.Day + ")";
testSht.Cells[3, 1].Value = new DateTime(2017, 1, 1);
testSht.Cells[3, 1].Style.Numberformat.Format = "dd.MM.yyyy";
testFile.Save();
}
问题
当我使用 EPPLUS
库导出 Microsoft Excel spreadsheet
时,我需要同时设置列的数据格式和单元格格式,以便 Microsoft Excel 中的结果日期Microsoft Excel's formulas
可以识别处理日期和时间的电子表格。
尝试了什么
我可以使用以下方法轻松设置单元格的格式:
currentWorkSheet.Cells["L" + currentRowNumber.ToString()].Style.Numberformat.Format = "m/d/yyyy";
currentWorkSheet.Cells["L" + currentRowNumber.ToString()].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right;
问题是,即使使用此数字格式和样式,单元格中的日期仍然无法识别为日期,它只是 格式化 为日期。
经过研究,我发现我需要将列设置为具有 "Date" 数据,如下图所示:
我尝试如图所示设置列的数据类型,但这不起作用:
currentWorkSheet.Column(10).Style.Numberformat.Format = "Date";
如何使列的数据类型成为日期?
我试过了,我发现,如果我输入的日期格式与系统中设置的完全一样,那么 Excel 会将其视为日期值类型,否则将其视为用户定义的。我的系统日期格式是 "dd.MM.yyyy" 并且由于 Excel 文件单元格 "A3" 中的此代码具有日期格式,单元格 "A2" 具有用户定义。 你可以看看这个。
我的测试用例是:
using (ExcelPackage testFile = new ExcelPackage(new System.IO.FileInfo(@"c:\Data\test.xlsx")))
{
ExcelWorksheet testSht = testFile.Workbook.Worksheets[1];
testSht.Cells[1, 1].Value = new DateTime(2017, 1, 1);
testSht.Cells[2, 1].Style.Numberformat.Format = "dd-mm-yyyy";
testSht.Cells[2, 1].Formula = "=Date(" + DateTime.Now.Year + "," + DateTime.Now.Month + "," + DateTime.Now.Day + ")";
testSht.Cells[3, 1].Value = new DateTime(2017, 1, 1);
testSht.Cells[3, 1].Style.Numberformat.Format = "dd.MM.yyyy";
testFile.Save();
}