2009-07-31 5 views
1

Ich habe Seite, die 2 Gridview und 2 Mshart enthält. Ich möchte diese Seite in Excel exportieren. Zu diesem Zweck nahm ich diese Steuerelemente in ein Panel und schreibe diesen Code:Export Seite, die Bilder in Excel enthalten

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

Wenn dieser Code ausgeführt wird, ist alles in Ordnung außer Diagrammen. Sie kommen nicht um zu übertreffen. Wie kann ich es tun?

Antwort

1

Nicht 100% sicher, aber ich denke, dass die Diagramme in den Speicher geschrieben werden, um auf der Seite anzuzeigen, so dass sie nach der Anfrage verschwinden.

HTML lässt nicht zu, dass ein Bild in den Code eingebettet wird, Sie müssen auf eine externe Datei verweisen.

Optionen:

  1. Überprüfen Sie, ob das Diagramm erlauben das Bild auf die Platte geschrieben werden, aber von der großen Anzahl von temporären Dateien passen, die Sie so halten speichern müssen können die Excel-Berichte das Bild zeigt
  2. (Empfohlen) Exportieren Sie den Bericht in PDF.
0

Probieren Sie den folgenden Code. Ich habe bei local IIS getestet, es funktioniert ordnungsgemäß und einschließlich des Bildes wie Header Image/Logo oben auf den Rasterdaten. Sie müssen Ihr Diagramm als Bilder einfügen.

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

können Sie die Höhe und die Breite Ihres Bildes entsprechend Ihrer Anforderung justieren. Für das Tag <TD> ist die gleiche Höhe und Breite erforderlich.