将包含图像的页面导出到Excel

时间:2009-07-31 06:45:17

标签: asp.net rendering export-to-excel

我的页面包含2个gridview和2个mschart。 ı想要将此页面导出为ex​​cel。为此,我将这些控件放到一个面板中并编写了这段代码:

    Response.Clear();        
    Response.ContentType = "application/vnd.msexcel";
    Response.AddHeader("content-disposition", "attachment; filename=rapor.xls");
    Response.ContentEncoding = System.Text.Encoding.Default;
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    panel1.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();

当这段代码运行时,除了图表外,一切都很好。他们不会出类拔萃。我该怎么办?

2 个答案:

答案 0 :(得分:1)

不是100%肯定,但我猜这些图表被写入内存以显示在页面上,因此它们会在请求后消失。

HTML不允许将图像嵌入代码中,您必须引用外部文件。

选项:

  1. 检查图表是否允许将图像写入磁盘,但要注意您可能必须存储的大量临时文件,以便excel报告继续显示图像
  2. (推荐)将报告导出为PDF。

答案 1 :(得分:0)

尝试以下代码。我在local IIS进行了测试,它运行正常,并在网格数据之上包含Header Image/Logo之类的图像。你必须将你的图表包括为图像。

Response.ContentType = "application/vnd.ms-excel";        
Response.AddHeader("Content-Disposition", "attachment; filename=test.xls;");                
StringWriter stringWrite = new StringWriter();        
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);        
dgrExport.DataSource = dtExport;        
dgrExport.DataBind();
dgrExport.RenderControl(htmlWrite);
string headerTable = @"<Table><tr><td><img src=""D:\\Folder\\1.jpg"" \></td></tr></Table>";
Response.Write(headerTable);
Response.Write(stringWrite.ToString());        
Response.End();

您可以根据自己的要求调整图像的高度和宽度。 <TD>标记需要相同的高度和宽度设置。