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

Asp.net 将包含图像的页面导出到Excel,asp.net,rendering,export-to-excel,Asp.net,Rendering,Export To Excel,我有一个包含2个gridview和2个mschart的页面。ı要将此页面导出到excel。为此,我将这些控件放入一个面板并编写以下代码: Response.Clear(); Response.ContentType = "application/vnd.msexcel"; Response.AddHeader("content-disposition", "attachment; filename=rapor.xls"); Response.Con

我有一个包含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();

当这段代码运行时,除了图表之外,一切都正常。他们不会变得优秀。我该怎么做呢?

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

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

选项:

  • 检查图表是否允许将图像写入磁盘,但请注意可能需要存储大量临时文件,以便excel报告继续显示图像
  • (建议)将报告导出为PDF格式

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

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

    选项:

  • 检查图表是否允许将图像写入磁盘,但请注意可能需要存储大量临时文件,以便excel报告继续显示图像
  • (建议)将报告导出为PDF格式

  • 请尝试以下代码。我已经在
    本地IIS
    进行了测试,它工作正常,并且在网格数据顶部包含了类似
    标题图像/徽标的图像。您必须将图表作为图像包含在内

    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();
    
    Response.ContentType=“应用程序/vnd.ms excel”;
    AddHeader(“内容处置”、“附件;文件名=test.xls;”);
    StringWriter stringWrite=新建StringWriter();
    HtmlTextWriter htmlWrite=新的HtmlTextWriter(stringWrite);
    dgrExport.DataSource=dtExport;
    dgrExport.DataBind();
    dgrExport.RenderControl(htmlWrite);
    字符串headerTable=@“”;
    响应。写入(headerTable);
    Response.Write(stringWrite.ToString());
    Response.End();
    

    您可以根据需要调整图像的高度和宽度。
    标签需要相同的高度和宽度设置。

    请尝试以下代码。我已经在
    本地IIS
    进行了测试,它工作正常,并且在网格数据顶部包含了类似
    标题图像/徽标的图像。您必须将图表作为图像包含在内

    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();
    
    Response.ContentType=“应用程序/vnd.ms excel”;
    AddHeader(“内容处置”、“附件;文件名=test.xls;”);
    StringWriter stringWrite=新建StringWriter();
    HtmlTextWriter htmlWrite=新的HtmlTextWriter(stringWrite);
    dgrExport.DataSource=dtExport;
    dgrExport.DataBind();
    dgrExport.RenderControl(htmlWrite);
    字符串headerTable=@“”;
    响应。写入(headerTable);
    Response.Write(stringWrite.ToString());
    Response.End();
    
    您可以根据需要调整图像的高度和宽度。
    标签需要相同的高度和宽度设置