2009-07-31 5 views
1

2グリッドビューと2mschartを含むページがあります。 ıこのページをエクセルにエクスポートしたい。この目的のために、私はこれらのコントロールをパネルに入れ、次のコードを書いています:画像を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>タグに必要です。

関連する問題