C# 导出到excel中的日期格式问题

C# 导出到excel中的日期格式问题,c#,asp.net,excel,date,gridview,C#,Asp.net,Excel,Date,Gridview,我正在从asp.net网站将导出的excel文档中的数据发送到excel。InsertDate格式为dd/mm/yyyyy,在大多数情况下,单元格格式为General not Date,因此它与我的系统日期设置不兼容 我需要在excel中获取单元格格式为Date,以便其他同事可以对其进行筛选 从网站获取excel中的dd/mm/yyyyy时,我的windows日期格式为M/dd/yyyy 示例:如果日期为2020年1月24日则在excel中为类型GENERAL,如果日期为2020年1月3日则为类

我正在从asp.net网站将导出的excel文档中的数据发送到excel。InsertDate格式为
dd/mm/yyyyy
,在大多数情况下,单元格格式为General not Date,因此它与我的系统日期设置不兼容

我需要在excel中获取单元格格式为Date,以便其他同事可以对其进行筛选

从网站获取excel中的
dd/mm/yyyyy
时,我的windows日期格式为
M/dd/yyyy

示例:如果日期为
2020年1月24日
则在excel中为类型
GENERAL
,如果日期为
2020年1月3日
则为类型
日期

Excel格式图片:

以下是将数据发送到excel的示例代码:

var grid = new System.Web.UI.WebControls.GridView();

grid.AutoGenerateColumns = false;
grid.DataSource = userData;

BoundField column;
column = new BoundField();
column.DataField = "DocumentId";
column.HeaderText = "Document No.";
grid.Columns.Add(column);

column = new BoundField();
column.DataField = "InsertDate";
column.HeaderText = "Document Date";

grid.Columns.Add(column);
Response.Clear();
Response.Buffer = true;

Response.AddHeader("content-disposition", "attachment;filename=Report.xls");

Response.Charset = "";

Response.ContentType = "application/vnd.ms-excel";

StringWriter sw = new StringWriter();

System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);

grid.AllowPaging = false;

grid.DataBind();
grid.RenderControl(hw);

Response.Output.Write(sw.ToString());

Response.Flush();

Response.End();

您根本没有生成Excel文件。您正在生成一个HTML文件,然后使用.XLS扩展名和MIME为其提供服务。那是个坏主意。并非所有可以打开Excel文件的应用程序都知道如何处理此文件。那些这样做的人会抱怨它可能是腐败的。相反,请使用诸如或之类的库来生成有效的Excel文件。帮助您修复当前代码将是浪费时间,因为您无论如何都需要完全重写此代码。是的,较新版本的Excel将在每次打开此文件时抛出一条警告消息,这不好。使用其中一个引用的库,或者需要在每个GridViewRow中循环,并仅删除所需的文本(即创建StringBuilder,每行都是使用逗号或制表符等分隔符的行内容)。