将asp.net图表保存到文件

时间:2013-08-21 11:11:02

标签: c# asp.net

我有一个条形图,其中包含与公司有关的各种机器的信息。

基本上我想将此图表输出到png文件,但我似乎无法正确输出。

我一直在寻找谷歌几个小时试图找到一个好的教程,但大多数人使用奇怪的第三方组件下载图像,我真的不想这样做。

这是我目前的代码:

string tmpChartName = "/MachinesByCompanyChart.png";

  protected void GenerateBarChartBut_click(object sender, EventArgs e)
        {
            Chart1.Visible = false;
            Chart2.Visible = true;

            DataTable table = new DataTable();

            dal.getTotalAssetsByCompany("table", TAB1CompanyDDL.SelectedItem.Text);

            table = dal.Results.Tables["table"];

            DataView dv = table.DefaultView;

            Chart2.Series["Series1"].Points.DataBindXY(dv, "AssetType", dv, "Total");

            Chart2.Palette = ChartColorPalette.None;

            Chart2.PaletteCustomColors = myGreenColorPalette;


            string imgPath2 = Server.MapPath(tmpChartName);
            Chart2.SaveImage(imgPath2, ChartImageFormat.Png);
        }

        protected void ExportAssetsByCompanyBut_click(object sender, EventArgs e)
        {

            Response.Clear();
            Response.ContentType = Chart1.ImageType.ToString();
            Response.AddHeader("Content-Disposition", "attachment; filename=" + tmpChartName);
            StringWriter stringWrite = new StringWriter();
            HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
            string headerTable = @"";
            Response.Write(headerTable);
            Response.Write(stringWrite.ToString());
            Response.End(); 
        }

我是否正确地将保存的图像传递给编写器方法?

1 个答案:

答案 0 :(得分:4)

试试这个,

在aspx.page

中设置图表的这两个属性
EnableViewState="true"
ImageStorageMode="UseImageLocation"

在aspx.cs页面上编写代码

System.IO.MemoryStream imagestream = new System.IO.MemoryStream();
Chart1.SaveImage(imagestream, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Png);
byte[] imageByte = imagestream.ToArray();