1

我的页面包含 2 个 gridview 和 2 个 mschart。我想将此页面导出到excel。为此,我将这些控件放入面板并编写以下代码:

    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();

当此代码运行时,除图表外一切正常。他们不会出类拔萃。我该怎么做?

4

2 回答 2

1

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

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

选项:

  1. 检查图表是否允许将图像写入磁盘,但请注意您可能必须存储大量临时文件,以便 excel 报告继续显示图像
  2. (推荐)将报告导出为 PDF。
于 2009-08-05T14:22:13.677 回答
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>标签需要相同的高度和宽度设置。

于 2012-03-09T18:18:47.650 回答