我创建了一个简单的应用程序,同时将数据导出到excel中。现在数据已成功导出到excel,但是当我打开下载的excel时,它将显示格式异常。
public ActionResult ExportOrder()
{
List<OrderItem> data = new List<OrderItem>();
GridView gv = new GridView();
gv.DataSource = data;
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=" + Common.GenerateSerialNo() + ".xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("OrderProducts");
}
这是在Excel中打开时的格式问题。 Format Issue Image
请建议我解决这个问题。
我尝试过但找到了使用NPOI或其他付费工具的解决方案。我们可以在不使用任何第三方工具的情况下解决格式问题。我也试过一些解决方案,但它对我不起作用。
答案 0 :(得分:0)
您需要在进行导出时设置数据绑定的样式,如下所示
private void gvPrint_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow) {
e.Row.Cells(0).Attributes.Add("class", "text");
e.Row.Cells(1).Attributes.Add("class", "text");
e.Row.Cells(2).Attributes.Add("class", "text");
e.Row.Cells(6).Attributes.Add("class", "text");
e.Row.Cells(7).Attributes.Add("class", "text");
e.Row.Cells(8).Attributes.Add("class", "text");
}
}