将带有数据(网格视图)和图像的html页面导出到Asp.net C#中的excel

时间:2018-09-26 10:10:50

标签: c# asp.net excel

标题可能无法很好地说明我的要求, 实际上,我正在寻找一些准则来解决我的代码问题,

  

我正在创建一个应用程序,该应用程序将使用   网格视图和徽标图像出色。我到目前为止在下面所做的事情:

private void ExportExcel()
    {
        //This method is defined in ButtonClick Event
        Response.Clear();
        Response.Buffer = true;
        Response.ClearContent();
        Response.ClearHeaders();
        Response.Charset = "";
        GridView2.AllowPaging = false;
        string FileName = "Exported" + DateTime.Now + ".xls";
        StringWriter strwritter = new StringWriter();
        HtmlTextWriter htmltextwrtter = new HtmlTextWriter(strwritter);
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName);
        this.EnableViewState = false;
        GridView2.DataBind();
        Response.Write(ExportDiv.InnerHtml);
        GridView2.GridLines = System.Web.UI.WebControls.GridLines.Both;
        GridView2.HeaderStyle.Font.Bold = true;
        GridView2.RenderControl(htmltextwrtter);
        Response.Write(strwritter.ToString());
        Response.End();
    }

上面的代码可以正常工作,但是它们与徽标图像有关。附加图像显示徽标图像存在问题, Check Image here

  

徽标图像未设置在我实际需要的单元格内。我什么   图片Please check image

中显示了需求

1 个答案:

答案 0 :(得分:0)

您无需使用任何外包库就可以做到这一点,而引起问题的事情将导致Grid视图和HTML代码的对齐。

  

所以我要做的是创建一个div并将其命名为ExportDiv并添加   ExportDiv内的HTML表,之后我在其中写HTML代码   通过一次又一次地添加行和列来添加表格,并添加网格视图   在ExportDiv内部创建的表格中。

以下是单击事件背后的代码。

 private void ExportToExcel(string strFileName)
    {
        StringBuilder sb = new StringBuilder();
        string attachment = "attachment; filename=" + strFileName;
        Response.AddHeader("content-disposition", attachment);
        Response.ContentType = "application/vnd.ms-excel";
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";
        StringWriter oStringWriter = new StringWriter();
        HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
        Response.Output.Write(sb.ToString());
        GridView3.AllowPaging = false;
        GridView3.DataBind();
        ExportDiv.RenderControl(oHtmlTextWriter);
        string style = @"<style> TD { mso-number-format:\@; } </style>";
        Response.Output.Write(oStringWriter.ToString());
        Response.Write(style);
        Response.End();
    }

上述代码的优点是可以相应地设置HTML设计和Grid视图对齐。

  

遇到此类问题的任何人都可以提出评论   一定要帮助他。