使用Office Web Components (OWC)来创建统计图的一个数据类。

/// <summary>
  /// 生成图表
  /// </summary>
  /// <param name="sdr">数据源(sqlDataReader)</param>
  /// <param name="intChartTypes">图片类型</param>
  /// <param name="filePath">图片路径</param>
  /// <param name="chartWidth">图片宽度</param>
  /// <param name="chartHeight">图片高度</param>
  /// <returns>图片存放的相对路径</returns>
  public string data_Chart(SqlDataReader sdr,int intChartTypes,string filePath,int chartWidth,int chartHeight)
  {
   ArrayList[] data_al=new ArrayList[sdr.FieldCount];
   
   for(int i=0;i<sdr.FieldCount;i++)
   {     
    data_al[i] = new ArrayList();    
   }  
  
   while(sdr.Read())
   {     
    for(int i=0;i<sdr.FieldCount;i++)
    {     
     data_al[i].Add(sdr.GetValue(i).ToString());     
    }                                              
   }  
   
   sdr.Close();   
   
   OWC11.ChartSpace objCSpace = new OWC11.ChartSpaceClass();
  
   //在ChartSpace对象中添加图表,Add方法返回chart对象
   OWC11.ChChart objChart = objCSpace.Charts.Add (0);

   
   //指定图表是否需要图例
   objChart.HasLegend = true;
   objChart.HasTitle=true;
   objChart.Title.Caption="分析图";
    
   //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到

   //objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeSmoothLine;
   //objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeBarStacked1003D;
   
   OWC11.ChartChartTypeEnum[] chartTypes = new OWC11.ChartChartTypeEnum[]{ OWC11.ChartChartTypeEnum.chChartTypeColumnClustered,
    OWC11.ChartChartTypeEnum.chChartTypeColumn3D,
    OWC11.ChartChartTypeEnum.chChartTypeBarClustered,
    OWC11.ChartChartTypeEnum.chChartTypeBar3D,
    OWC11.ChartChartTypeEnum.chChartTypeArea,
    OWC11.ChartChartTypeEnum.chChartTypeArea3D,
    OWC11.ChartChartTypeEnum.chChartTypeDoughnut,
    OWC11.ChartChartTypeEnum.chChartTypeLineStacked,
    OWC11.ChartChartTypeEnum.chChartTypeLine3D,
    OWC11.ChartChartTypeEnum.chChartTypeLineMarkers,
    OWC11.ChartChartTypeEnum.chChartTypePie,
    OWC11.ChartChartTypeEnum.chChartTypePie3D,
      OWC11.ChartChartTypeEnum.chChartTypeRadarSmoothLine,
    OWC11.ChartChartTypeEnum.chChartTypeSmoothLine};
   
   objChart.Type=chartTypes[intChartTypes];
            //string[] chartTypesCh = new string [] {"垂直柱状统计图","3D垂直柱状统计图","水平柱状统计图","3D水平柱状统计图","区域统计图","3D区域统计图","中空饼图","折线统计图","3D折线统计图","折线带点统计图","饼图","3D饼图","网状统计图","弧线统计图"};
  
  

 

   for(int i=0;i<data_al.Length-1;i++)
   {
    //在ChartSpace对象中添加图表,Add方法返回chart对象
    objChart.SeriesCollection.Add(i);   
    objChart.SeriesCollection[i].DataLabelsCollection.Add();
    string strSeriesName=""+(i+1);
    //给定series的名字
    objChart.SeriesCollection[i].SetData (OWC11.ChartDimensionsEnum.chDimSeriesNames,
     (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);

     
     
    //给定分类
    objChart.SeriesCollection[i].SetData (OWC11.ChartDimensionsEnum.chDimCategories,
     (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral,data_al[0].ToArray());
     
    //给定值
    objChart.SeriesCollection[i].SetData
     (OWC11.ChartDimensionsEnum.chDimValues,     
     (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral,data_al[i+1].ToArray());
 
    objChart.SeriesCollection[i].Caption="电量指标";
     
   }
   
   
  
   //输出成GIF文件.
   string strAbsolutePath =filePath+"//temp//test.gif";
    
   objCSpace.ExportPicture(strAbsolutePath, "GIF",chartWidth,chartHeight);

   //创建GIF文件的相对路径.
   string strRelativePath;
   strRelativePath=@"../Analyse/temp/test.gif";
   return strRelativePath;   
  
  }

用法:

private void Page_Load(object sender, System.EventArgs e)
  {
   if(!IsPostBack)
   {
        string[] chartTypesCh = new string [] {"垂直柱状统计图","3D垂直柱状统计图","水平柱状统计图","3D水平柱状统计图","区域统计图","3D区域统计图","中空饼图","折线统计图","3D折线统计图","折线带点统计图","饼图","3D饼图","网状统计图","弧线统计图"};
    
    for(int i=0;i<chartTypesCh.Length;i++)
     {
     ChartTypes.Items.Add(chartTypesCh[i]);  
     }

    SQL="SELECT DISTINCT wellname FROM well_electric_fl"; 
    Super.ddl_Load(SQL,DropDownList1,"wellname","wellname");

   }
  
  }

private void btnShow_Click(object sender, System.EventArgs e)
  {
   
   SQL="SELECT ElecDate,ElecValue FROM well_electric_fl ";
   SQL+=" WHERE wellname='"+this.DropDownList1.SelectedValue+"'";
   SQL+=" AND ElecDate>='"+ this.TextBox1.Text+"'";
   SQL+=" AND ElecDate<='"+ this.TextBox2.Text+"'";
   string strTemp;
   imgPath=Super.data_Chart(Super.GetDataReader(SQL),ChartTypes.SelectedIndex, Server.MapPath("."),800,450);
   strTemp="<br><img src="+imgPath+"?tmp="+System.Guid.NewGuid().ToString()+" border=0 title=分析图>";
   sp1.InnerHtml=strTemp;
   
  }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值