我已将DataTable导出为excel文件。但是当我打开excel文件时,DateTime格式发生了变化
当我导出数据时,DateTime字段包含" 7/21/2016 12:00:00 AM
"值。当我打开excel文件时,DateTime字段显示" 7/21/2016 0:00
"值。
但是当我在excel文件中检查公式栏时DateTime值显示正确" 7/21/2016 12:00:00 AM
"。
我有什么办法可以解决这个问题吗?
我使用下面的代码将DataTable导出为excel:
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.Write(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">");
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + curEventName + ".xls");
HttpContext.Current.Response.Charset = "utf-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
////sets font
HttpContext.Current.Response.Write("<font style='font-size:10.0pt; font-family:Calibri;'>");
HttpContext.Current.Response.Write("<BR><BR><BR>");
//sets the table border, cell spacing, border color, font of the text, background, foreground, font height
HttpContext.Current.Response.Write("<Table border='1' bgColor='#ffffff' " +
"borderColor='#000000' cellSpacing='0' cellPadding='0' " +
"style='font-size:10.0pt; font-family:\"Times New Roman\"; background:white;'> <TR>");
//am getting my grid's column headers
int columnscount = dt_exportResponse.Columns.Count;
for (int j = 0; j < columnscount; j++)
{ //write in new column
HttpContext.Current.Response.Write("<Td>");
//Get column headers and make it as bold in excel columns
HttpContext.Current.Response.Write("<B>");
HttpContext.Current.Response.Write(dt_exportResponse.Columns[j].ColumnName);
HttpContext.Current.Response.Write("</B>");
HttpContext.Current.Response.Write("</Td>");
}
HttpContext.Current.Response.Write("</TR>");
foreach (DataRow row in dt_exportResponse.Rows)
{//write in new row
HttpContext.Current.Response.Write("<TR>");
for (int i = 0; i < dt_exportResponse.Columns.Count; i++)
{
HttpContext.Current.Response.Write("<Td>");
HttpContext.Current.Response.Write(row[i].ToString());
HttpContext.Current.Response.Write("</Td>");
}
HttpContext.Current.Response.Write("</TR>");
}
HttpContext.Current.Response.Write("</Table>");
HttpContext.Current.Response.Write("</font>");
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
答案 0 :(得分:1)
这不是错误。这只是您如何指示Excel显示DATE类型的给定单元格的问题。您可以通过修改Format-&gt; Cells:Number来覆盖任何单元格,或者您可以使用各种内置日期处理函数来拼凑任何 ad hoc 日期/时间格式您可能希望,如 2016年10月22日星期六,如果这适合您。