我有一个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列的正确格式?