使用ClosedXML将DateTime导出到Excel不起作用:dd / MM / yyyy HH:mm:ss被切成dd / MM / yyyy

我有一个ASP.NET MVC Web应用程序,我正在尝试使用ClosedXML v0.87.0.0将数据表导出到Excel。 DataTable列之一是DateTime类型,其格式为dd / MM / yyyy HH:mm:ss。 一旦将DataTable正确导出到Excel,我将使用Excel打开它,并且看到DateTime列以dd / MM / yyyy格式出现。似乎时间已经过去了。

我需要将DateTime字段作为dd / MM / yyyy HH:mm:ss导出到Excel中。我该怎么做?为什么ClosedXML忽略了时间部分?

下面的一些代码片段(假设已经填充了DataTable'dt'):

XLWorkbook workbook = new XLWorkbook();
IXLWorksheet workSheet = workbook.Worksheets.Add(dt,dt.TableName);

如上所述,我将整个DataTable'dt'添加到Excel工作表中。我没有遍历所有DataTable行,而是一一添加。

我知道我可以遍历每个DataTable行,并通过执行与下面的代码段类似的操作将其逐个添加到Excel工作表,并将正确的datetime格式应用于DateTime列:

Using (XLWorkbook wb = new XLWorkbook())
{
    IXLWorksheet ws = wb.Worksheets.Add("worksheet");

    if (dt.Rows.Count > 0)
    {
        ws.Cell("A1").Value = dt.Columns[0].ColumnName;
        ws.Cell("B1").Value = dt.Columns[1].ColumnName;
        ws.Cell("C1").Value = dt.Columns[2].ColumnName;

        for (int i = 0; i < dt.Rows.Count - 1; i++)
        {
            ws.Cell(String.Format("A{0}",(i + 2))).Value = dt.Rows[i][0];
            ws.Cell(String.Format("B{0}",(i + 2))).Value = dt.Rows[i][1];
            ws.Cell(String.Format("C{0}",(i + 2))).Value = dt.Rows[i][2];
            ws.Cell(String.Format("C{0}",(i + 2))).Style.DateFormat.Format = "dd/MM/yyyy HH:mm:ss";
        }
    }
}

...但是我要避免循环遍历所有DataTable行。我想一次将DataTable添加到工作表中,然后如何为ClosedXML指示DateTime列的正确格式?

yyaiwdk1 回答:使用ClosedXML将DateTime导出到Excel不起作用:dd / MM / yyyy HH:mm:ss被切成dd / MM / yyyy

您可以使用Epplus软件包,我认为它更易于使用。您将使用的代码为:Answer - Export DataTable to Excel with EPPlus

本文链接:https://www.f2er.com/2904501.html

大家都在问