2009-07-31 8 views
1

J'ai une page qui contient 2 gridview et 2 mschart. Je veux exporter cette page pour exceler. A cet effet, j'ai pris ces contrôles dans un panneau et écrire ce code:Page d'exportation qui inclut des images vers 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(); 

Lorsque ce code est exécuté, tout est ok sauf les graphiques. Ils ne viennent pas pour exceller. Comment puis-je le faire?

Répondre

1

Pas 100% sûr, mais je suppose que les graphiques sont écrits en mémoire pour afficher sur la page, de sorte qu'ils disparaissent après la demande.

HTML ne permet pas d'incorporer une image dans le code, vous devez référencer un fichier externe.

Options:

  1. Vérifiez si le tableau permet l'image à écrire sur le disque, mais méfiez-vous du grand nombre de fichiers temporaires que vous pouvez avoir à stocker de sorte que les rapports Excel garder montrant l'image
  2. (Recommandé) Exportez le rapport au format PDF.
0

Essayez le code suivant. J'ai testé à local IIS, il fonctionne correctement et en incluant l'image comme Header Image/Logo sur le dessus des données de la grille. vous devez inclure votre graphique en tant qu'images.

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

Vous pouvez ajuster la hauteur et la largeur de votre image selon vos besoins. Le même paramètre de hauteur et de largeur sera requis pour la balise <TD>.

Questions connexes