<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
_ReportOwc.aspx.cs
"
Inherits
=
"
_ReportOwc
"
%>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title > 无标题页 </ title >
< link href ="../images/xj_style.css" _fcksavedurl ="" ../images/xj_style.css"" _fcksavedurl ="" ../images/xj_style.css"" rel ="stylesheet" type ="text/css" />
< script language ="javascript" src ="../System_Web_Resources.js" type ="text/css" ></ script >
</ head >
< body onload ="parent.window.document.all.myiframe.style.height=document.body.scrollHeight+10;" >
< form id ="form1" runat ="server" >
< table style ="width: 100%" id ="TABLE2" runat ="server" >
< tr >
< td align ="center" colspan ="1" rowspan ="1" style ="height: 23px; width: 949px;" valign ="top" >
< table id ="Table4" border ="0" cellpadding ="0" cellspacing ="0" width ="98%" >
< tr >
< td align ="left" style ="height: 43px" valign ="bottom" width ="40%" >
< table id ="Table5" border ="0" cellpadding ="0" cellspacing ="0" style ="border-bottom: #ffffff 1px solid" >
< tr >
< td class ="lmstyle" >
< img align ="Middle" height ="20" src ="../images/blacksjbiao_big.gif" width ="15" />
< asp:Label ID ="LabelMailTitle" runat ="server" Font-Size ="14px" Text ="统计图表" ></ asp:Label ></ td >
< td align ="left" >
< img height ="27" src ="../images/lmtu_right.gif" width ="27" /></ td >
</ tr >
</ table >
</ td >
< td style ="height: 43px" width ="60%" >
< div align ="right" >
< img height ="41" src ="../images/index2.gif" width ="306" /></ div >
</ td >
</ tr >
</ table >
</ td >
</ tr >
< tr >
< td align ="left" rowspan ="2" valign ="top" style ="width: 949px" >
< table id ="Table1" border ="0" cellpadding ="1" cellspacing ="1" width ="100%" >
< tr >
< td style ="height: 24px" >
选择时间段: < asp:DropDownList ID ="DropDownList2" runat ="server" >
</ asp:DropDownList >
< asp:DropDownList ID ="DropDownList3" runat ="server" >
</ asp:DropDownList > —
< asp:DropDownList ID ="DropDownList4" runat ="server" >
</ asp:DropDownList >
< asp:DropDownList ID ="DropDownList5" runat ="server" >
</ asp:DropDownList >
< asp:Button ID ="btnSelect" runat ="server" OnClick ="btnSelect_Click" Text ="检索" CssClass ="xjbutton1" />
选择图表类型:
< asp:DropDownList ID ="_DropDownListtype" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="DropDownList_SelectedIndexChanged" >
</ asp:DropDownList >
< asp:Button ID ="Button3" runat ="server" Text ="绘制饼图" OnClick ="Button3_Click" Visible ="False" CssClass ="xjbutton1" />
< asp:Button ID ="Button2" runat ="server" Text ="绘制条状图" OnClick ="Button2_Click" Visible ="False" CssClass ="xjbutton1" />
< asp:Button ID ="Button1" runat ="server" OnClick ="Button1_Click" Text ="绘制柱状图" Visible ="False" CssClass ="xjbutton1" /></ td >
</ tr >
</ table >
</ td >
</ tr >
< tr >
</ tr >
< tr >
< td align ="center" valign ="top" style ="width: 949px; height: 32px" >
< asp:Image ID ="Image1" runat ="server" /></ td >
</ tr >
</ table >
< font face ="宋体" >
< asp:TreeView ID ="TreeView1" runat ="server" Visible ="False" >
< Nodes >
< asp:TreeNode Text ="简单检索" Value ="0" ></ asp:TreeNode >
</ Nodes >
</ asp:TreeView >
</ font >
</ form >
</ body >
</ html >
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title > 无标题页 </ title >
< link href ="../images/xj_style.css" _fcksavedurl ="" ../images/xj_style.css"" _fcksavedurl ="" ../images/xj_style.css"" rel ="stylesheet" type ="text/css" />
< script language ="javascript" src ="../System_Web_Resources.js" type ="text/css" ></ script >
</ head >
< body onload ="parent.window.document.all.myiframe.style.height=document.body.scrollHeight+10;" >
< form id ="form1" runat ="server" >
< table style ="width: 100%" id ="TABLE2" runat ="server" >
< tr >
< td align ="center" colspan ="1" rowspan ="1" style ="height: 23px; width: 949px;" valign ="top" >
< table id ="Table4" border ="0" cellpadding ="0" cellspacing ="0" width ="98%" >
< tr >
< td align ="left" style ="height: 43px" valign ="bottom" width ="40%" >
< table id ="Table5" border ="0" cellpadding ="0" cellspacing ="0" style ="border-bottom: #ffffff 1px solid" >
< tr >
< td class ="lmstyle" >
< img align ="Middle" height ="20" src ="../images/blacksjbiao_big.gif" width ="15" />
< asp:Label ID ="LabelMailTitle" runat ="server" Font-Size ="14px" Text ="统计图表" ></ asp:Label ></ td >
< td align ="left" >
< img height ="27" src ="../images/lmtu_right.gif" width ="27" /></ td >
</ tr >
</ table >
</ td >
< td style ="height: 43px" width ="60%" >
< div align ="right" >
< img height ="41" src ="../images/index2.gif" width ="306" /></ div >
</ td >
</ tr >
</ table >
</ td >
</ tr >
< tr >
< td align ="left" rowspan ="2" valign ="top" style ="width: 949px" >
< table id ="Table1" border ="0" cellpadding ="1" cellspacing ="1" width ="100%" >
< tr >
< td style ="height: 24px" >
选择时间段: < asp:DropDownList ID ="DropDownList2" runat ="server" >
</ asp:DropDownList >
< asp:DropDownList ID ="DropDownList3" runat ="server" >
</ asp:DropDownList > —
< asp:DropDownList ID ="DropDownList4" runat ="server" >
</ asp:DropDownList >
< asp:DropDownList ID ="DropDownList5" runat ="server" >
</ asp:DropDownList >
< asp:Button ID ="btnSelect" runat ="server" OnClick ="btnSelect_Click" Text ="检索" CssClass ="xjbutton1" />
选择图表类型:
< asp:DropDownList ID ="_DropDownListtype" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="DropDownList_SelectedIndexChanged" >
</ asp:DropDownList >
< asp:Button ID ="Button3" runat ="server" Text ="绘制饼图" OnClick ="Button3_Click" Visible ="False" CssClass ="xjbutton1" />
< asp:Button ID ="Button2" runat ="server" Text ="绘制条状图" OnClick ="Button2_Click" Visible ="False" CssClass ="xjbutton1" />
< asp:Button ID ="Button1" runat ="server" OnClick ="Button1_Click" Text ="绘制柱状图" Visible ="False" CssClass ="xjbutton1" /></ td >
</ tr >
</ table >
</ td >
</ tr >
< tr >
</ tr >
< tr >
< td align ="center" valign ="top" style ="width: 949px; height: 32px" >
< asp:Image ID ="Image1" runat ="server" /></ td >
</ tr >
</ table >
< font face ="宋体" >
< asp:TreeView ID ="TreeView1" runat ="server" Visible ="False" >
< Nodes >
< asp:TreeNode Text ="简单检索" Value ="0" ></ asp:TreeNode >
</ Nodes >
</ asp:TreeView >
</ font >
</ form >
</ body >
</ html >
using
System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Office.Interop.Owc11;
using System.Text;
public partial class _ReportOwc : System.Web.UI.Page
{
MyCRM.DB db = new MyCRM.DB();
ChartFactory chartFactory = new ChartFactory();
DataTable dt = new DataTable();
DataTable treetable = new DataTable();
OWCChart11 chart = new OWCChart11();
string filepath = "" ;
public static Hashtable chartMap = new Hashtable();
string type = " dept " ;
string sql = " select d.name,count(d.name) from person p join dept d on d.id=p.dept where person_state='正常' group by d.name " ;
public void Page_Load( object sender, System.EventArgs e)
{
dt = db.ececSelectSql( " select top 50 person.truename,wage.薪资 from person left join wage on person.id=wage.员工姓名 " );
filepath = Server.MapPath( " . " ) + " \\ChartImages " ;
Image1.ImageUrl = "" ;
InitTypeMap();
treetable = db.ececSelectSql( " select col_name,show_name from tablestruct where table_name='person' order by [id] " );
// 在此处放置用户代码以初始化页面
#region 按钮绘制图形
chart.Title = " 标题 " ;
chart.SeriesName = " 图例 " ;
chart.PhaysicalImagePath = filepath;
chart.PicHight = 320 ;
chart.PicWidth = 500 ;
chart.DataSource = dt; // 这是你的数据源
#endregion
if ( ! IsPostBack)
{
deleteFile();
// 默认绘制
for ( int i = 1 ; i < 13 ; i ++ )
{
ListItem item = new ListItem();
item.Text = Convert.ToString(DateTime.Now.Year - i) + " 年 " ;
item.Value = Convert.ToString(DateTime.Now.Year - i);
DropDownList2.Items.Add(item);
DropDownList4.Items.Add(item);
item = new ListItem();
item.Text = Convert.ToString(i) + " 月 " ;
item.Value = Convert.ToString(i);
DropDownList3.Items.Add(item);
DropDownList5.Items.Add(item);
}
}
if (Request.QueryString[ " type " ] != null )
{
type = Request.QueryString[ " type " ].ToString().Trim();
// Response.Write(type);
}
else
{
type = " dept " ;
}
switch (type)
{
case " post " : // 职务
sql = " select d.post,count(d.post) from person p join post d on d.id=p.post where person_state='正常' group by d.post " ;
break ;
case " dept " : // 部门
sql = " select d.name,count(d.name) from person p join dept d on d.id=p.dept where person_state='正常' group by d.name " ;
break ;
case " sex " : // 性别
sql = " select sex,count(sex) from person where person_state='正常' group by sex " ;
break ;
case " PoliticsVisage " : // 政治面貌
sql = " select PoliticsVisage,count(PoliticsVisage) from person where person_state='正常' group by PoliticsVisage " ;
break ;
case " person_state " : // 员工状态
sql = " select [person_state],count([person_state]) from person group by [person_state] " ;
break ;
default :
break ;
}
DropDownList_SelectedIndexChanged(sender, e);
}
public void deleteFile()
{
string [] strFileName = System.IO.Directory.GetFiles(Server.MapPath( " . " ) + @" \ChartImages\ " );
for ( int i = 0 ;i < strFileName.Length;i ++ )
{
System.IO.FileInfo file = new System.IO.FileInfo(strFileName[i]);
string strtemp = file.Name.Split( ' . ' )[ 0 ];
if (strtemp.Length > 8 )
{
strtemp = strtemp.Substring( 0 , 4 ) + " - " + strtemp.Substring( 4 , 2 ) + " - " + strtemp.Substring( 6 , 2 );
if (Convert.ToDateTime(strtemp) < DateTime.Now.AddDays( - 1 ))
{
if (file.Exists)
{
file.Delete();
}
}
}
}
}
public void InitTypeMap()
{
chartMap.Clear();
string str = "" ;
if (_DropDownListtype.Items.Count > 0 )
{
str = _DropDownListtype.SelectedItem.Text;
}
_DropDownListtype.Items.Clear();
Microsoft.Office.Interop.Owc11.ChartChartTypeEnum[] chartTypes = new Microsoft.Office.Interop.Owc11.ChartChartTypeEnum[]{ ChartChartTypeEnum.chChartTypeColumnClustered,
ChartChartTypeEnum.chChartTypeColumn3D,
ChartChartTypeEnum.chChartTypeBarClustered,
ChartChartTypeEnum.chChartTypeBar3D,
ChartChartTypeEnum.chChartTypeArea,
ChartChartTypeEnum.chChartTypeArea3D,
ChartChartTypeEnum.chChartTypeDoughnut,
ChartChartTypeEnum.chChartTypeLineStacked,
ChartChartTypeEnum.chChartTypeLine3D,
ChartChartTypeEnum.chChartTypeLineMarkers,
ChartChartTypeEnum.chChartTypePie,
ChartChartTypeEnum.chChartTypePie3D,
ChartChartTypeEnum.chChartTypeRadarSmoothLine,
ChartChartTypeEnum.chChartTypeSmoothLine};
string [] chartTypesCh = new string [] { " 垂直柱状统计图 " , " 3D垂直柱状统计图 " , " 水平柱状统计图 " , " 3D水平柱状统计图 " , " 区域统计图 " , " 3D区域统计图 " , " 中空饼图 " , " 折线统计图 " , " 3D折线统计图 " , " 折线带点统计图 " , " 饼图 " , " 3D饼图 " , " 网状统计图 " , " 弧线统计图 " };
for ( int i = 0 ; i < chartTypes.Length; i ++ )
{
chartMap.Add(chartTypesCh[i], chartTypes[i]);
}
for ( int i = 0 ; i < chartTypes.Length; i ++ )
{
ListItem ii = new ListItem(chartTypesCh[i]);
_DropDownListtype.Items.Add(ii);
}
foreach (ListItem ii in _DropDownListtype.Items)
{
if (ii.Text == str)
{
ii.Selected = true ;
}
}
}
#region 按钮事件
public void Button1_Click( object sender, System.EventArgs e)
{
this .Image1.ImageUrl = @" .\ChartImages\ " + chart.CreateColumn(); // 显示给图像控件。
}
public void Button2_Click( object sender, System.EventArgs e)
{
this .Image1.ImageUrl = @" .\ChartImages\ " + chart.CreateBar(); // 显示给图像控件。
}
public void Button3_Click( object sender, System.EventArgs e)
{
this .Image1.ImageUrl = @" .\ChartImages\ " + chart.CreatePie(); // 显示给图像控件。
}
// 按钮绘制类
public class OWCChart11
{
#region 属性
public string _phaysicalimagepath;
public string _title;
public string _seriesname;
public int _picwidth;
public int _pichight;
public DataTable _datasource;
public string strCategory;
public string strValue;
/// <summary>
/// 图片存放路径
/// </summary>
public string PhaysicalImagePath
{
set { _phaysicalimagepath = value; }
get { return _phaysicalimagepath; }
}
/// <summary>
/// 图片标题
/// </summary>
public string Title
{
set { _title = value; }
get { return _title; }
}
/// <summary>
/// 图片说明
/// </summary>
public string SeriesName
{
set { _seriesname = value; }
get { return _seriesname; }
}
/// <summary>
/// 图片宽度
/// </summary>
public int PicWidth
{
set { _picwidth = value; }
get { return _picwidth; }
}
/// <summary>
/// 图片高度
/// </summary>
public int PicHight
{
set { _pichight = value; }
get { return _pichight; }
}
/// <summary>
/// 图片数据源
/// </summary>
public DataTable DataSource
{
set
{
_datasource = value;
strCategory = GetColumnsStr(_datasource);
strValue = GetValueStr(_datasource);
}
get { return _datasource; }
}
/// <summary>
/// 列类型
/// </summary>
public string GetColumnsStr(DataTable dt)
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dt.Rows)
{
strList.Append(r[ 0 ].ToString() + ' \t ' );
}
return strList.ToString();
}
/// <summary>
/// 列值
/// </summary>
public string GetValueStr(DataTable dt)
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dt.Rows)
{
strList.Append(r[ 1 ].ToString() + ' \t ' );
}
return strList.ToString();
}
#endregion
public OWCChart11()
{
}
public OWCChart11( string PhaysicalImagePath, string Title, string SeriesName)
{
_phaysicalimagepath = PhaysicalImagePath;
_title = Title;
_seriesname = SeriesName;
}
/// <summary>
/// 柱形图
/// </summary>
/// <returns></returns>
public string CreateColumn()
{
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass(); // 创建ChartSpace对象来放置图表
Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add( 0 ); // 在ChartSpace对象中添加图表,Add方法返回chart对象
// 指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到 // Microsoft.Office.Interop.OWC.ChartChartTypeEnum
// objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;
objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;
// 指定图表是否需要图例
objChart.HasLegend = true ;
// 标题
objChart.HasTitle = true ;
objChart.Title.Caption = _title;
objChart.Title.Font.Bold = true ;
objChart.Title.Font.Color = " blue " ;
#region 样式设置
// 旋转
objChart.Rotation = 360 ; // 表示指定三维图表的旋转角度
objChart.Inclination = 10 ; // 表示指定三维图表的视图斜率。有效范围为 -90 到 90
// 背景颜色
objChart.PlotArea.Interior.Color = " yellow " ;
// 底座颜色
objChart.PlotArea.Floor.Interior.Color = " green " ;
objChart.Overlap = 50 ; // 单个类别中标志之间的重叠量
#endregion
// x,y轴的图示说明
objChart.Axes[ 0 ].HasTitle = true ;
objChart.Axes[ 0 ].Title.Caption = " X : 类别 " ;
objChart.Axes[ 1 ].HasTitle = true ;
objChart.Axes[ 1 ].Title.Caption = " Y : 数量 " ;
// 添加一个series
Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add( 0 );
// 给定series的名字
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
// 给定分类
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
// 给定值
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[ 0 ].DataLabelsCollection.Add();
dl.HasValue = true ;
// dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .gif " ;
string strAbsolutePath = _phaysicalimagepath + " \\ " + filename;
objCSpace.ExportPicture(strAbsolutePath, " GIF " , _picwidth, _pichight); // 输出成GIF文件.
return filename;
}
/// <summary>
/// 饼图
/// </summary>
/// <returns></returns>
public string CreatePie()
{
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass(); // 创建ChartSpace对象来放置图表
Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add( 0 ); // 在ChartSpace对象中添加图表,Add方法返回chart对象
// 指定图表的类型
objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypePie;
// 指定图表是否需要图例
objChart.HasLegend = true ;
// 标题
objChart.HasTitle = true ;
objChart.Title.Caption = _title;
// 添加一个series
Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add( 0 );
// 给定series的名字
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
// 给定分类
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
// 给定值
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
// 表示系列或趋势线上的单个数据标志
Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[ 0 ].DataLabelsCollection.Add();
dl.HasValue = true ;
dl.HasPercentage = true ;
// 图表绘图区的图例放置在右侧。
// dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionRight;
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .gif " ;
string strAbsolutePath = _phaysicalimagepath + " \\ " + filename;
objCSpace.ExportPicture(strAbsolutePath, " GIF " , _picwidth, _pichight); // 输出成GIF文件.
return filename;
}
/// <summary>
/// 条形图
/// </summary>
/// <returns></returns>
public string CreateBar()
{
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass(); // 创建ChartSpace对象来放置图表
Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add( 0 ); // 在ChartSpace对象中添加图表,Add方法返回chart对象
// 指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到 // Microsoft.Office.Interop.OWC.ChartChartTypeEnum
objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeBarClustered;
// 指定图表是否需要图例
objChart.HasLegend = true ;
// 标题
objChart.HasTitle = true ;
objChart.Title.Caption = _title;
objChart.Title.Font.Bold = true ;
objChart.Title.Font.Color = " blue " ;
#region 样式设置
// // 旋转
objChart.Rotation = 360 ; // 表示指定三维图表的旋转角度
objChart.Inclination = 10 ; // 表示指定三维图表的视图斜率。有效范围为 -90 到 90
// 背景颜色
objChart.PlotArea.Interior.Color = " red " ;
// 底座颜色
objChart.PlotArea.Floor.Interior.Color = " green " ;
objChart.Overlap = 50 ; // 单个类别中标志之间的重叠量
#endregion
// x,y轴的图示说明
objChart.Axes[ 0 ].HasTitle = true ;
objChart.Axes[ 0 ].Title.Caption = " X : 类别 " ;
objChart.Axes[ 1 ].HasTitle = true ;
objChart.Axes[ 1 ].Title.Caption = " Y : 数量 " ;
// 添加一个series
Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add( 0 );
// 给定series的名字
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
// 给定分类
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
// 给定值
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[ 0 ].DataLabelsCollection.Add();
dl.HasValue = true ;
// dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .gif " ;
string strAbsolutePath = _phaysicalimagepath + " \\ " + filename;
objCSpace.ExportPicture(strAbsolutePath, " GIF " , _picwidth, _pichight); // 输出成GIF文件.
return filename;
}
}
#endregion
#region 下拉框事件
public void DropDownList_SelectedIndexChanged( object sender, System.EventArgs e)
{
string [] chartCategories = new string [ 10 ];
string [] chartValues = new string [ 10 ];
// Response.Write(sql);
DataTable ddt = db.ececSelectSql(sql);
for ( int i = 0 ; i < ddt.Rows.Count; i ++ )
{
chartCategories[i] = ddt.Rows[i][ 0 ].ToString();
chartValues[i] = ddt.Rows[i][ 1 ].ToString();
}
chartFactory.chartCategoriesArrValue = chartCategories;
chartFactory.chartValuesArrValue = chartValues;
chartFactory.chartTitleValue = " 统计图表 " ;
chartFactory.chartTypeValue = _DropDownListtype.SelectedItem.Text;
Microsoft.Office.Interop.Owc11.ChartSpaceClass oChartSpace = chartFactory.BuildCharts();
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .png " ;
string path = Server.MapPath( " . " ) + @" \ChartImages\ " + filename; // 产生图片并保存,还可以是png gif图片
if (System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
oChartSpace.ExportPicture(path, " png " , 470 , 330 );
Image1.ImageUrl = @" .\ChartImages\ " + filename; // 显示统计图
}
#region 下拉框绘制类
public class ChartFactory
{
public ChartFactory()
{
}
public System.Web.UI.WebControls.Image imgHondaLineup;
public string [] chartCategoriesArr;
public string [] chartValuesArr;
public Microsoft.Office.Interop.Owc11.ChartChartTypeEnum chartType = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumn3D; // 默认值
public static string chartTypeCh = " 垂直柱状图 " ;
public static string chartTitle = "" ;
public Microsoft.Office.Interop.Owc11.ChartSpaceClass BuildCharts()
{
string chartCategoriesStr = String.Join( " \t " , chartCategoriesArr);
string chartValuesStr = String.Join( " \t " , chartValuesArr);
Microsoft.Office.Interop.Owc11.ChartSpaceClass oChartSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();
int ii = chartMap.Count;
chartType = (ChartChartTypeEnum)chartMap[chartTypeCh];
if (chartType == ChartChartTypeEnum.chChartTypePie ||
chartType == ChartChartTypeEnum.chChartTypePie3D ||
chartType == ChartChartTypeEnum.chChartTypeDoughnut)
{
oChartSpace.HasChartSpaceLegend = true ;
oChartSpace.ChartSpaceLegend.Position = ChartLegendPositionEnum.chLegendPositionBottom;
}
oChartSpace.Border.Color = " blue " ;
oChartSpace.Charts.Add( 0 );
oChartSpace.Charts[ 0 ].HasTitle = true ;
oChartSpace.Charts[ 0 ].Type = chartType;
oChartSpace.Charts[ 0 ].ChartDepth = 125 ;
oChartSpace.Charts[ 0 ].AspectRatio = 80 ;
oChartSpace.Charts[ 0 ].Title.Caption = chartTitle;
oChartSpace.Charts[ 0 ].Title.Font.Bold = true ;
oChartSpace.Charts[ 0 ].SeriesCollection.Add( 0 );
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection.Add();
if (chartType == ChartChartTypeEnum.chChartTypePie ||
chartType == ChartChartTypeEnum.chChartTypePie3D ||
chartType == ChartChartTypeEnum.chChartTypeDoughnut)
{
// oChartSpace.Charts[0].HasLegend = true;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasPercentage = true ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasValue = false ;
}
else
{
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasPercentage = false ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasValue = true ;
}
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].Caption = String.Empty;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Name = " verdana " ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Size = 10 ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Bold = false ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Color = " red " ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Position = ChartDataLabelPositionEnum.chLabelPositionCenter;
if (chartType == ChartChartTypeEnum.chChartTypeBarClustered ||
chartType == ChartChartTypeEnum.chChartTypeBar3D ||
chartType == ChartChartTypeEnum.chChartTypeColumnClustered ||
chartType == ChartChartTypeEnum.chChartTypeColumn3D)
{
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Position = ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
}
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Convert.ToInt32(Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral), chartCategoriesStr);
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Convert.ToInt32(Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral), chartValuesStr);
return oChartSpace;
}
#region 属性设置
public string [] chartCategoriesArrValue
{
get
{
return chartCategoriesArr;
}
set
{
chartCategoriesArr = value;
}
}
public string [] chartValuesArrValue
{
get
{
return chartValuesArr;
}
set
{
chartValuesArr = value;
}
}
public string chartTypeValue
{
get
{
return chartTypeCh;
}
set
{
chartTypeCh = value;
}
}
public string chartTitleValue
{
get
{
return chartTitle;
}
set
{
chartTitle = value;
}
}
#endregion
}
#endregion
#endregion
protected void TreeView1_SelectedNodeChanged( object sender, EventArgs e)
{
TreeView1.SelectedNodeStyle.BackColor = System.Drawing.Color.PaleGoldenrod;
}
protected void btnSelect_Click( object sender, EventArgs e)
{
DropDownList_SelectedIndexChanged(sender, e);
}
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Office.Interop.Owc11;
using System.Text;
public partial class _ReportOwc : System.Web.UI.Page
{
MyCRM.DB db = new MyCRM.DB();
ChartFactory chartFactory = new ChartFactory();
DataTable dt = new DataTable();
DataTable treetable = new DataTable();
OWCChart11 chart = new OWCChart11();
string filepath = "" ;
public static Hashtable chartMap = new Hashtable();
string type = " dept " ;
string sql = " select d.name,count(d.name) from person p join dept d on d.id=p.dept where person_state='正常' group by d.name " ;
public void Page_Load( object sender, System.EventArgs e)
{
dt = db.ececSelectSql( " select top 50 person.truename,wage.薪资 from person left join wage on person.id=wage.员工姓名 " );
filepath = Server.MapPath( " . " ) + " \\ChartImages " ;
Image1.ImageUrl = "" ;
InitTypeMap();
treetable = db.ececSelectSql( " select col_name,show_name from tablestruct where table_name='person' order by [id] " );
// 在此处放置用户代码以初始化页面
#region 按钮绘制图形
chart.Title = " 标题 " ;
chart.SeriesName = " 图例 " ;
chart.PhaysicalImagePath = filepath;
chart.PicHight = 320 ;
chart.PicWidth = 500 ;
chart.DataSource = dt; // 这是你的数据源
#endregion
if ( ! IsPostBack)
{
deleteFile();
// 默认绘制
for ( int i = 1 ; i < 13 ; i ++ )
{
ListItem item = new ListItem();
item.Text = Convert.ToString(DateTime.Now.Year - i) + " 年 " ;
item.Value = Convert.ToString(DateTime.Now.Year - i);
DropDownList2.Items.Add(item);
DropDownList4.Items.Add(item);
item = new ListItem();
item.Text = Convert.ToString(i) + " 月 " ;
item.Value = Convert.ToString(i);
DropDownList3.Items.Add(item);
DropDownList5.Items.Add(item);
}
}
if (Request.QueryString[ " type " ] != null )
{
type = Request.QueryString[ " type " ].ToString().Trim();
// Response.Write(type);
}
else
{
type = " dept " ;
}
switch (type)
{
case " post " : // 职务
sql = " select d.post,count(d.post) from person p join post d on d.id=p.post where person_state='正常' group by d.post " ;
break ;
case " dept " : // 部门
sql = " select d.name,count(d.name) from person p join dept d on d.id=p.dept where person_state='正常' group by d.name " ;
break ;
case " sex " : // 性别
sql = " select sex,count(sex) from person where person_state='正常' group by sex " ;
break ;
case " PoliticsVisage " : // 政治面貌
sql = " select PoliticsVisage,count(PoliticsVisage) from person where person_state='正常' group by PoliticsVisage " ;
break ;
case " person_state " : // 员工状态
sql = " select [person_state],count([person_state]) from person group by [person_state] " ;
break ;
default :
break ;
}
DropDownList_SelectedIndexChanged(sender, e);
}
public void deleteFile()
{
string [] strFileName = System.IO.Directory.GetFiles(Server.MapPath( " . " ) + @" \ChartImages\ " );
for ( int i = 0 ;i < strFileName.Length;i ++ )
{
System.IO.FileInfo file = new System.IO.FileInfo(strFileName[i]);
string strtemp = file.Name.Split( ' . ' )[ 0 ];
if (strtemp.Length > 8 )
{
strtemp = strtemp.Substring( 0 , 4 ) + " - " + strtemp.Substring( 4 , 2 ) + " - " + strtemp.Substring( 6 , 2 );
if (Convert.ToDateTime(strtemp) < DateTime.Now.AddDays( - 1 ))
{
if (file.Exists)
{
file.Delete();
}
}
}
}
}
public void InitTypeMap()
{
chartMap.Clear();
string str = "" ;
if (_DropDownListtype.Items.Count > 0 )
{
str = _DropDownListtype.SelectedItem.Text;
}
_DropDownListtype.Items.Clear();
Microsoft.Office.Interop.Owc11.ChartChartTypeEnum[] chartTypes = new Microsoft.Office.Interop.Owc11.ChartChartTypeEnum[]{ ChartChartTypeEnum.chChartTypeColumnClustered,
ChartChartTypeEnum.chChartTypeColumn3D,
ChartChartTypeEnum.chChartTypeBarClustered,
ChartChartTypeEnum.chChartTypeBar3D,
ChartChartTypeEnum.chChartTypeArea,
ChartChartTypeEnum.chChartTypeArea3D,
ChartChartTypeEnum.chChartTypeDoughnut,
ChartChartTypeEnum.chChartTypeLineStacked,
ChartChartTypeEnum.chChartTypeLine3D,
ChartChartTypeEnum.chChartTypeLineMarkers,
ChartChartTypeEnum.chChartTypePie,
ChartChartTypeEnum.chChartTypePie3D,
ChartChartTypeEnum.chChartTypeRadarSmoothLine,
ChartChartTypeEnum.chChartTypeSmoothLine};
string [] chartTypesCh = new string [] { " 垂直柱状统计图 " , " 3D垂直柱状统计图 " , " 水平柱状统计图 " , " 3D水平柱状统计图 " , " 区域统计图 " , " 3D区域统计图 " , " 中空饼图 " , " 折线统计图 " , " 3D折线统计图 " , " 折线带点统计图 " , " 饼图 " , " 3D饼图 " , " 网状统计图 " , " 弧线统计图 " };
for ( int i = 0 ; i < chartTypes.Length; i ++ )
{
chartMap.Add(chartTypesCh[i], chartTypes[i]);
}
for ( int i = 0 ; i < chartTypes.Length; i ++ )
{
ListItem ii = new ListItem(chartTypesCh[i]);
_DropDownListtype.Items.Add(ii);
}
foreach (ListItem ii in _DropDownListtype.Items)
{
if (ii.Text == str)
{
ii.Selected = true ;
}
}
}
#region 按钮事件
public void Button1_Click( object sender, System.EventArgs e)
{
this .Image1.ImageUrl = @" .\ChartImages\ " + chart.CreateColumn(); // 显示给图像控件。
}
public void Button2_Click( object sender, System.EventArgs e)
{
this .Image1.ImageUrl = @" .\ChartImages\ " + chart.CreateBar(); // 显示给图像控件。
}
public void Button3_Click( object sender, System.EventArgs e)
{
this .Image1.ImageUrl = @" .\ChartImages\ " + chart.CreatePie(); // 显示给图像控件。
}
// 按钮绘制类
public class OWCChart11
{
#region 属性
public string _phaysicalimagepath;
public string _title;
public string _seriesname;
public int _picwidth;
public int _pichight;
public DataTable _datasource;
public string strCategory;
public string strValue;
/// <summary>
/// 图片存放路径
/// </summary>
public string PhaysicalImagePath
{
set { _phaysicalimagepath = value; }
get { return _phaysicalimagepath; }
}
/// <summary>
/// 图片标题
/// </summary>
public string Title
{
set { _title = value; }
get { return _title; }
}
/// <summary>
/// 图片说明
/// </summary>
public string SeriesName
{
set { _seriesname = value; }
get { return _seriesname; }
}
/// <summary>
/// 图片宽度
/// </summary>
public int PicWidth
{
set { _picwidth = value; }
get { return _picwidth; }
}
/// <summary>
/// 图片高度
/// </summary>
public int PicHight
{
set { _pichight = value; }
get { return _pichight; }
}
/// <summary>
/// 图片数据源
/// </summary>
public DataTable DataSource
{
set
{
_datasource = value;
strCategory = GetColumnsStr(_datasource);
strValue = GetValueStr(_datasource);
}
get { return _datasource; }
}
/// <summary>
/// 列类型
/// </summary>
public string GetColumnsStr(DataTable dt)
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dt.Rows)
{
strList.Append(r[ 0 ].ToString() + ' \t ' );
}
return strList.ToString();
}
/// <summary>
/// 列值
/// </summary>
public string GetValueStr(DataTable dt)
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dt.Rows)
{
strList.Append(r[ 1 ].ToString() + ' \t ' );
}
return strList.ToString();
}
#endregion
public OWCChart11()
{
}
public OWCChart11( string PhaysicalImagePath, string Title, string SeriesName)
{
_phaysicalimagepath = PhaysicalImagePath;
_title = Title;
_seriesname = SeriesName;
}
/// <summary>
/// 柱形图
/// </summary>
/// <returns></returns>
public string CreateColumn()
{
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass(); // 创建ChartSpace对象来放置图表
Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add( 0 ); // 在ChartSpace对象中添加图表,Add方法返回chart对象
// 指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到 // Microsoft.Office.Interop.OWC.ChartChartTypeEnum
// objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;
objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;
// 指定图表是否需要图例
objChart.HasLegend = true ;
// 标题
objChart.HasTitle = true ;
objChart.Title.Caption = _title;
objChart.Title.Font.Bold = true ;
objChart.Title.Font.Color = " blue " ;
#region 样式设置
// 旋转
objChart.Rotation = 360 ; // 表示指定三维图表的旋转角度
objChart.Inclination = 10 ; // 表示指定三维图表的视图斜率。有效范围为 -90 到 90
// 背景颜色
objChart.PlotArea.Interior.Color = " yellow " ;
// 底座颜色
objChart.PlotArea.Floor.Interior.Color = " green " ;
objChart.Overlap = 50 ; // 单个类别中标志之间的重叠量
#endregion
// x,y轴的图示说明
objChart.Axes[ 0 ].HasTitle = true ;
objChart.Axes[ 0 ].Title.Caption = " X : 类别 " ;
objChart.Axes[ 1 ].HasTitle = true ;
objChart.Axes[ 1 ].Title.Caption = " Y : 数量 " ;
// 添加一个series
Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add( 0 );
// 给定series的名字
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
// 给定分类
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
// 给定值
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[ 0 ].DataLabelsCollection.Add();
dl.HasValue = true ;
// dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .gif " ;
string strAbsolutePath = _phaysicalimagepath + " \\ " + filename;
objCSpace.ExportPicture(strAbsolutePath, " GIF " , _picwidth, _pichight); // 输出成GIF文件.
return filename;
}
/// <summary>
/// 饼图
/// </summary>
/// <returns></returns>
public string CreatePie()
{
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass(); // 创建ChartSpace对象来放置图表
Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add( 0 ); // 在ChartSpace对象中添加图表,Add方法返回chart对象
// 指定图表的类型
objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypePie;
// 指定图表是否需要图例
objChart.HasLegend = true ;
// 标题
objChart.HasTitle = true ;
objChart.Title.Caption = _title;
// 添加一个series
Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add( 0 );
// 给定series的名字
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
// 给定分类
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
// 给定值
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
// 表示系列或趋势线上的单个数据标志
Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[ 0 ].DataLabelsCollection.Add();
dl.HasValue = true ;
dl.HasPercentage = true ;
// 图表绘图区的图例放置在右侧。
// dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionRight;
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .gif " ;
string strAbsolutePath = _phaysicalimagepath + " \\ " + filename;
objCSpace.ExportPicture(strAbsolutePath, " GIF " , _picwidth, _pichight); // 输出成GIF文件.
return filename;
}
/// <summary>
/// 条形图
/// </summary>
/// <returns></returns>
public string CreateBar()
{
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass(); // 创建ChartSpace对象来放置图表
Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add( 0 ); // 在ChartSpace对象中添加图表,Add方法返回chart对象
// 指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到 // Microsoft.Office.Interop.OWC.ChartChartTypeEnum
objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeBarClustered;
// 指定图表是否需要图例
objChart.HasLegend = true ;
// 标题
objChart.HasTitle = true ;
objChart.Title.Caption = _title;
objChart.Title.Font.Bold = true ;
objChart.Title.Font.Color = " blue " ;
#region 样式设置
// // 旋转
objChart.Rotation = 360 ; // 表示指定三维图表的旋转角度
objChart.Inclination = 10 ; // 表示指定三维图表的视图斜率。有效范围为 -90 到 90
// 背景颜色
objChart.PlotArea.Interior.Color = " red " ;
// 底座颜色
objChart.PlotArea.Floor.Interior.Color = " green " ;
objChart.Overlap = 50 ; // 单个类别中标志之间的重叠量
#endregion
// x,y轴的图示说明
objChart.Axes[ 0 ].HasTitle = true ;
objChart.Axes[ 0 ].Title.Caption = " X : 类别 " ;
objChart.Axes[ 1 ].HasTitle = true ;
objChart.Axes[ 1 ].Title.Caption = " Y : 数量 " ;
// 添加一个series
Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add( 0 );
// 给定series的名字
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
// 给定分类
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
// 给定值
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[ 0 ].DataLabelsCollection.Add();
dl.HasValue = true ;
// dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .gif " ;
string strAbsolutePath = _phaysicalimagepath + " \\ " + filename;
objCSpace.ExportPicture(strAbsolutePath, " GIF " , _picwidth, _pichight); // 输出成GIF文件.
return filename;
}
}
#endregion
#region 下拉框事件
public void DropDownList_SelectedIndexChanged( object sender, System.EventArgs e)
{
string [] chartCategories = new string [ 10 ];
string [] chartValues = new string [ 10 ];
// Response.Write(sql);
DataTable ddt = db.ececSelectSql(sql);
for ( int i = 0 ; i < ddt.Rows.Count; i ++ )
{
chartCategories[i] = ddt.Rows[i][ 0 ].ToString();
chartValues[i] = ddt.Rows[i][ 1 ].ToString();
}
chartFactory.chartCategoriesArrValue = chartCategories;
chartFactory.chartValuesArrValue = chartValues;
chartFactory.chartTitleValue = " 统计图表 " ;
chartFactory.chartTypeValue = _DropDownListtype.SelectedItem.Text;
Microsoft.Office.Interop.Owc11.ChartSpaceClass oChartSpace = chartFactory.BuildCharts();
string filename = DateTime.Now.ToString( " yyyyMMddHHmmssff " ) + " .png " ;
string path = Server.MapPath( " . " ) + @" \ChartImages\ " + filename; // 产生图片并保存,还可以是png gif图片
if (System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
oChartSpace.ExportPicture(path, " png " , 470 , 330 );
Image1.ImageUrl = @" .\ChartImages\ " + filename; // 显示统计图
}
#region 下拉框绘制类
public class ChartFactory
{
public ChartFactory()
{
}
public System.Web.UI.WebControls.Image imgHondaLineup;
public string [] chartCategoriesArr;
public string [] chartValuesArr;
public Microsoft.Office.Interop.Owc11.ChartChartTypeEnum chartType = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumn3D; // 默认值
public static string chartTypeCh = " 垂直柱状图 " ;
public static string chartTitle = "" ;
public Microsoft.Office.Interop.Owc11.ChartSpaceClass BuildCharts()
{
string chartCategoriesStr = String.Join( " \t " , chartCategoriesArr);
string chartValuesStr = String.Join( " \t " , chartValuesArr);
Microsoft.Office.Interop.Owc11.ChartSpaceClass oChartSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();
int ii = chartMap.Count;
chartType = (ChartChartTypeEnum)chartMap[chartTypeCh];
if (chartType == ChartChartTypeEnum.chChartTypePie ||
chartType == ChartChartTypeEnum.chChartTypePie3D ||
chartType == ChartChartTypeEnum.chChartTypeDoughnut)
{
oChartSpace.HasChartSpaceLegend = true ;
oChartSpace.ChartSpaceLegend.Position = ChartLegendPositionEnum.chLegendPositionBottom;
}
oChartSpace.Border.Color = " blue " ;
oChartSpace.Charts.Add( 0 );
oChartSpace.Charts[ 0 ].HasTitle = true ;
oChartSpace.Charts[ 0 ].Type = chartType;
oChartSpace.Charts[ 0 ].ChartDepth = 125 ;
oChartSpace.Charts[ 0 ].AspectRatio = 80 ;
oChartSpace.Charts[ 0 ].Title.Caption = chartTitle;
oChartSpace.Charts[ 0 ].Title.Font.Bold = true ;
oChartSpace.Charts[ 0 ].SeriesCollection.Add( 0 );
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection.Add();
if (chartType == ChartChartTypeEnum.chChartTypePie ||
chartType == ChartChartTypeEnum.chChartTypePie3D ||
chartType == ChartChartTypeEnum.chChartTypeDoughnut)
{
// oChartSpace.Charts[0].HasLegend = true;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasPercentage = true ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasValue = false ;
}
else
{
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasPercentage = false ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].HasValue = true ;
}
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].Caption = String.Empty;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Name = " verdana " ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Size = 10 ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Bold = false ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Font.Color = " red " ;
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Position = ChartDataLabelPositionEnum.chLabelPositionCenter;
if (chartType == ChartChartTypeEnum.chChartTypeBarClustered ||
chartType == ChartChartTypeEnum.chChartTypeBar3D ||
chartType == ChartChartTypeEnum.chChartTypeColumnClustered ||
chartType == ChartChartTypeEnum.chChartTypeColumn3D)
{
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].DataLabelsCollection[ 0 ].Position = ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
}
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Convert.ToInt32(Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral), chartCategoriesStr);
oChartSpace.Charts[ 0 ].SeriesCollection[ 0 ].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Convert.ToInt32(Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral), chartValuesStr);
return oChartSpace;
}
#region 属性设置
public string [] chartCategoriesArrValue
{
get
{
return chartCategoriesArr;
}
set
{
chartCategoriesArr = value;
}
}
public string [] chartValuesArrValue
{
get
{
return chartValuesArr;
}
set
{
chartValuesArr = value;
}
}
public string chartTypeValue
{
get
{
return chartTypeCh;
}
set
{
chartTypeCh = value;
}
}
public string chartTitleValue
{
get
{
return chartTitle;
}
set
{
chartTitle = value;
}
}
#endregion
}
#endregion
#endregion
protected void TreeView1_SelectedNodeChanged( object sender, EventArgs e)
{
TreeView1.SelectedNodeStyle.BackColor = System.Drawing.Color.PaleGoldenrod;
}
protected void btnSelect_Click( object sender, EventArgs e)
{
DropDownList_SelectedIndexChanged(sender, e);
}
}
參考: http://www.cnblogs.com/pincelee/archive/2007/07/28/834604.html