owc11生成曲线图表类,接口为DataSet.

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.UI;

using OWC11;

 

namespace licChart

{

       /// <summary>

       /// Line 的摘要说明。

       /// </summary>

       public class ChartLine3:System.Web.UI.Page

       {

              public string toChartLine3(DataSet myDataSet,string YValue,string Series,string xTitle,string yTitle,string ChartTitle)

              {

                     // 在此处放置用户代码以初始化页面

                    

                     //创建ChartSpace对象来放置图表

                     OWC11.ChartSpace objCSpace = new OWC11.ChartSpaceClass ();

 

                     //ChartSpace对象中添加图表,Add方法返回chart对象

                     OWC11.ChChart objChart = objCSpace.Charts.Add (0);

 

                     //指定图表的类型。类型由OWC11.ChartChartTypeEnum枚举值得到

                     objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeLine;

 

                     //给定标题

                     objChart.HasTitle = true;

                     //objChart.Title.Caption= ChartNmae;

 

                     //给定x,y轴的图示说明

                     objChart.Title.Caption= ChartTitle;

 

                     //给定x,y轴的图示说明

                     objChart.Axes[0].HasTitle = true;

                     objChart.Axes[0].Title.Caption = xTitle;

                     objChart.Axes[1].HasTitle = true;

                     objChart.Axes[1].Title.Caption = yTitle;

 

                     //计算数据

                     //objCSpace.DataSource=(msdatasrc.DataSource)dataSet;

             

                    

                     if(Series!="")

                     {

 

                            //指定图表是否需要图例

                            objChart.HasLegend = true;

                            string[] Ser=Series.ToString().Split(',');

                            string[] Ser1=Series.ToString().Split(',');

 

                            string[] YValue_temp=YValue.ToString().Split(',');

                            string[] strValue=new string[YValue_temp.Length];

                            string[] strCategory=new string[YValue_temp.Length];

                            //循环数据集得到不重复的序列名

                            for(int i=0;i<=Ser.Length-1;i++)

                            {

                                   //把第一行的Ser[i]列放入字符串

                                   string Series1=myDataSet.Tables[0].Rows[0][Ser[i]].ToString();

 

                    

                                   //循环数据集得出与字符串内不同的Ser[i]值,放入字符串

                                   for(int j=1;j<=myDataSet.Tables[0].Rows.Count-1;j++)

                                   {

                                          //将字符串分割成数组

                                          string[] Series11=Series1.Split(',');

                                          int k=0;

                                          //将数据集各行的Ser[i]值与分割后的数组中的每个值循环比较,都不同的话加到字符串中

                                          for(int w=0;w<=Series11.Length-1;w++)

                                          {

                                                 //如果与字符串中的某个值相等k增加1

                                                 if(myDataSet.Tables[0].Rows[j][Ser[i]].ToString()==Series11[w]) k++;

                                  

                                          }

                                          //k不等0说明没有重复的项,将该行此项添加进字符串

                                          if(k==0)Series1+=","+myDataSet.Tables[0].Rows[j][Ser[i]].ToString();

                                   }

                                   //将最后得出的不重复的某序列存进数组

                                   Ser[i]=Series1;

 

                            }

                            int v_num=1;

                            //得出动态数组的长度个序列值个数的乘积

                            for(int i=0;i<=Ser.Length-1;i++)

                            {    

                                   string[] v_str=Ser[i].Split(',');

                                   v_num=v_num*v_str.Length;

                            }

                            string[] v_str_all=new string[v_num];//定义存放序列的数组.

                            string temp="";

                            int v_j=0;

 

                            if(Ser.Length==1)                

                            {

                                   for(int i=0;i<=Ser.Length-1;i++)

                                   {    

                                          string[] v_str=Ser[i].Split(',');

                                          for(int j=0;j<=v_str.Length-1;j++)

                                          {

                                                 for(int k=v_num-1;k>=0;k--)

                                                 {

                                                        int v_step=v_num/v_str.Length;

                                                        if((k>=j*(v_step))&&(k<(j+1)*v_step))

                                                

                                                               //     if(k%v_str.Length==0)

                                                        {

                                                               v_str_all[k]=v_str_all[k]+v_str[j]+"-";

                                                        }

                                                

                                                 }

                                          }

                                   }

                            }

                            else

                            {

                                   for(int i=1;i<=Ser.Length-1;i++)

                                   {    

                                          if(i!=1)Ser[0]=Ser[0].Substring(0,Ser[0].Length-1);

                                          string[] ser1=Ser[0].Split(',');

                                          Ser[0]="";

                                          for(int j=0;j<=ser1.Length-1;j++)

                                          {    

                                                 string[] ser2=Ser[i].Split(',');

                                                 for(int k=0;k<=ser2.Length-1;k++)

                                                 {

                                                        Ser[0]+=ser1[j]+"-"+ser2[k]+",";

                                                 }

                                          }

                                   }

                                   Ser[0]=Ser[0].Substring(0,Ser[0].Length-1);

                            }

                           

                            v_str_all=Ser[0].Split(',');

                            if(Ser.Length==1)

                            {

                                   for(int k=0;k<v_str_all.Length;k++)

                                   {

                                          v_str_all[k]=v_str_all[k].Substring(0,v_str_all[k].Length-1);

                                   }

                            }

 

                            string Seriestemp="";

                          

                           

                            for(int j=0;j<=myDataSet.Tables[0].Rows.Count-1;j++)

                            {

                                   Seriestemp="";

                                   for(int w=0;w<=Ser1.Length-1;w++)

                                   {    

                                         

                                          Seriestemp+=myDataSet.Tables[0].Rows[j][Ser1[w]].ToString()+"-";

                                         

                                   }

                                   Seriestemp=Seriestemp.Substring(0,Seriestemp.Length-1);

                                   for(int i=0;i<=v_str_all.Length-1;i++)

                                   {

                                          if(Seriestemp==v_str_all[i])

                                          {

                                         

                                                 for(int q=0;q<=YValue_temp.Length-1;q++)

                                                 {

                                         

                                                        strValue[q]+=myDataSet.Tables[0].Rows[j][YValue_temp[q]].ToString()+'/t';

                                                        strCategory[q]+=v_str_all[i]+'/t';

                                                 }

                                          }

                                   }

 

                                         

                            }

                    

                           

 

 

                            //添加一个series

                            string[] YValue1=YValue.ToString().Split(',');

 

                            for(int i=0;i<=strCategory.Length-1;i++)

                            {

                                   objChart.SeriesCollection.Add(i);

                                 

                                  

                                   //给定series的名字

                                   objChart.SeriesCollection[i].SetData (OWC11.ChartDimensionsEnum.chDimSeriesNames,

                                          + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, YValue1[i]);

 

                                   //给定分类

                                   objChart.SeriesCollection[i].SetData (OWC11.ChartDimensionsEnum.chDimCategories,

                                          + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory[i]);

 

                                   //给定值

                                   objChart.SeriesCollection[i].SetData

                                          (OWC11.ChartDimensionsEnum.chDimValues,

                                          (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, strValue[i]);

                            }

 

                     }

                    

 

                     //输出成GIF文件.

                     //string strAbsolutePath = (Server.MapPath(".")) + "//test1.gif";

                     Random vRandom=new Random();

                     int vRandomInt=vRandom.Next(10000,30000);

            string vRandomStr=vRandomInt.ToString();

                     vRandomInt=vRandom.Next(10000,30000);

                     vRandomStr=vRandomStr+vRandomInt.ToString();

                     string strAbsolutePath = (Server.MapPath("//")) + "temp//" + vRandomStr + ".gif";

                     objCSpace.ExportPicture(strAbsolutePath, "GIF", 640,480);

 

                     //创建GIF文件的相对路径.

                     string strRelativePath = "/temp/" + vRandomStr + ".gif";

 

                     //把图片添加到placeholder.

                     string strImageTag = "<IMG SRC='" + strRelativePath + "'/>";

                     return strImageTag;

              }

             

       }

}


 


 

 相应的柱状图只需要将 objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeLine;改一下。owc11中ChartChartTypeEnum枚举了很多种样式,3D、2D的都有,可以自由选择。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值