Asp.net gridview导出到excel格式问题

时间:2016-12-02 11:43:14

标签: c# asp.net asp.net-mvc gridview

我创建了一个简单的应用程序,同时将数据导出到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或其他付费工具的解决方案。我们可以在不使用任何第三方工具的情况下解决格式问题。我也试过一些解决方案,但它对我不起作用。

1 个答案:

答案 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");
    }
}