owc组件使用(统计分析图)
<%@ 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
申明
非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!
博文欢迎转载,但请给出原文连接。