/// <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;
}