1

2 つの gridview と 2 つの mschart を含むページがあります。このページをエクセルにエクスポートしたいです。この目的のために、これらのコントロールをパネルに取り込んで、次のコードを記述しました。

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

このコードを実行すると、チャート以外はすべて問題ありません。彼らは卓越しているわけではありません。どうすればいいですか?

4

2 に答える 2

1

100% 確実ではありませんが、チャートはページに表示するためにメモリに書き込まれるため、リクエスト後に消えてしまうと思います。

HTML ではコードに画像を埋め込むことはできません。外部ファイルを参照する必要があります。

オプション:

  1. チャートで画像をディスクに書き込むことができるかどうかを確認しますが、Excel レポートに画像が表示され続けるように、多数の一時ファイルを保存する必要があることに注意してください。
  2. (推奨) レポートを PDF にエクスポートします。
于 2009-08-05T14:22:13.677 に答える
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>タグにも同じ高さと幅の設定が必要です。

于 2012-03-09T18:18:47.650 に答える