将 DateTime 导出到 Excel 无法使用 ClosedXML:dd/MM/yyyy HH:mm:ss 被截断为



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

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

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

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

如上所示,我将整个数据表"dt"添加到 Excel 工作表中。我不会遍历所有数据表行并逐个添加它们。

我知道我可以遍历每个 DataTable 行并逐个添加到 Excel 工作表中,并通过执行类似于以下代码片段的操作将正确的日期时间格式应用于 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";
}
}
}

。但我想避免遍历所有数据表行。我想一次将数据表添加到工作表中,但是如何将日期时间列的正确格式指示为ClosedXML?

您可以使用 Epplus 包,我认为它更容易使用。您将使用的代码是这样的: 答案 - 使用 EPPlus 将数据表导出到 Excel

相关内容

最新更新