这是导出按钮:
protected void btnExportToExcel_Click(object sender, EventArgs e)
{
var dataTable = (DataTable) Session["finalSchedulesTable"];
var dummyGv = new GridView {AllowPaging = false, DataSource = dataTable};
dummyGv.DataBind();
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=Schedules " + DateTime.Now.ToString(CultureInfo.InvariantCulture).Replace("/", "-").Replace(":", "_") + ".xlsx");
Response.Charset = "";
//Response.ContentType = "application/vnd.ms-excel";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
var sw = new StringWriter();
var hw = new HtmlTextWriter(sw);
for (int i = 0; i < dummyGv.Rows.Count; i++)
{
//Apply text style to each Row
dummyGv.Rows[i].Attributes.Add("class", "textmode");
}
dummyGv.RenderControl(hw);
//style to format numbers to string
const string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
如果我在上面的代码中将文件扩展名更改为“.xls”,则该过程有效,但是,当我尝试打开文件时仍然收到以下消息:
“您尝试打开的文件 'filename.xls' 的格式与文件扩展名指定的格式不同。在打开文件之前,请确认文件没有损坏并且来自受信任的来源。您要打开现在存档?”
如果我说“是”,它将正常打开文件。
这里的问题是我不希望此消息弹出。我该如何解决这个问题?
我要做的就是将数据导出到 Excel 并允许用户正常打开文件(没有任何警告消息)。