0

MS Chart Controls を使用して、Web アプリケーション (.Net 4.0) でグラフを生成しました。私の要件は、特定のチャートを画像として Excel ファイルにエクスポートすることです。チャート画像をバイト配列としてExcelファイルに書き込もうとして、以下のコードを書きました。しかし、それは私のExcelファイルにいくつかの不明な文字をもたらしました. (バイト配列がファイルに直接書き込まれている可能性があります)。

byte[] bytes2;
    using (var chartimage = new MemoryStream())
    {
        Chart1.SaveImage(chartimage, ChartImageFormat.Png);
        bytes2 = chartimage.GetBuffer();
    }

    Response.Clear();
    Response.ContentType = "application/ms-excel";
    Response.AddHeader("content-disposition", "attachment; filename=StudentResults.xls");
    Response.BinaryWrite(bytes2);

    Response.End();

このグラフを正しい方法で Excel ファイルに書き込む方法を教えてください。(バイト配列を使用しなくても問題ありません)ありがとう

4

1 に答える 1

0

それを実装する正しい方法を見つけることができました。ms チャート (ms チャート コントロール) を画像として Excel にエクスポートします。ここで共有できてうれしいです。正しいソース コード サンプルは次のとおりです。

string tmpChartName = "test2.jpg";
    string imgPath = HttpContext.Current.Request.PhysicalApplicationPath + tmpChartName;

    Chart1.SaveImage(imgPath);
    string imgPath2 = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/" + tmpChartName);

    Response.Clear();
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", "attachment; filename=test.xls;");
    StringWriter stringWrite = new StringWriter();
    HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    string headerTable = @"<Table><tr><td><img src='" + imgPath2 + @"' \></td></tr></Table>";
    Response.Write(headerTable);
    Response.Write(stringWrite.ToString());
    Response.End();

ありがとう :)

于 2012-05-16T12:03:39.327 に答える