在C#中使用EPPLUS设置列数据格式

时间:2017-02-08 03:33:07

标签: c# excel vba epplus

问题

当我使用Microsoft Excel spreadsheet库导出EPPLUS时,我需要设置列的数据格式以及单元格格式,以便{Excel Excel电子表格中的结果日期可以被{ {1}}处理日期和时间。

尝试了什么

我可以使用以下方法轻松设置单元格格式:

Microsoft Excel's formulas

问题在于,即使使用此数字格式和样式,单元格中的日期仍未被识别为日期,它只是格式化作为日期。

经过研究,我发现我需要将列设置为具有“日期”数据,如下图所示:Image

我尝试设置列的数据类型如图所示,但这不起作用:

currentWorkSheet.Cells["L" + currentRowNumber.ToString()].Style.Numberformat.Format = "m/d/yyyy";
currentWorkSheet.Cells["L" + currentRowNumber.ToString()].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right;

如何才能使列的数据类型成为日期?

1 个答案:

答案 0 :(得分:3)

我试过了,我发现,如果我输入完全按照我在系统中设置的日期格式,那么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();
            }