2009-07-31 80 views
1

我有包含2个gridview和2个mschart的页面。我想将此页面导出为ex​​cel。为了这个目的,我把这些控件到面板和编写代码:当此代码运行,一切都只是图表确定将包含图像的页面导出到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(); 

。他们不会出色。我该怎么做?

回答

1

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

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

选项:

  1. 检查图表允许图像被写入到磁盘,但大量的临时文件,你可能需要存储这样的Excel报表继续显示图像
  2. 的提防
  3. (推荐)将报告导出为PDF。
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>标签需要相同的高度和宽度设置。