Beyond the dream——飛雪飄寒
————磨難不過是人生鍵盤的回車。。。。。。
posts - 73, comments - 221, trackbacks - 29, articles - -1
博客园
::
首页
:: ::
联系
::
订阅
::
管理
.net调用OWC生成报表统计图总结
Posted on 2008-06-19 22:43
飛雪飄寒
阅读(1765)
评论(10)
编辑
收藏
网摘
所属分类:
ASP.NET
、
C#
、
学习总结
这几天在
做项目时要对数据进行统计分析,所以必须生成一些统计图(如柱形图、饼图、曲线图等),于是我首先想到了微软的
owc11控件
,
owc11控件是microsoft office 图表控件(owc10为ofiiceXP的组件、owc11为office2003的组件,组件的路径为C:\Program Files\Common Files\Microsoft Shared\Web Components\11\owc11,帮助文件的路径为C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052),调用它可以生成三维图、柱状图、饼状图、趋势图和误差图等。
首先必须添加引用owc11:在“com选项卡”中选择“misrosoft office 11.0 object library”或直接选择路径为C:\Program Files\Common Files\Microsoft Shared\Web Components\11\owc11的owc11;
接下来是自己写的对
owc11
操作的封装类,以便于在程序里调用。
具体代码及说明如下:
1
using
System;
2
using
System.Data;
3
using
System.Text;
4
using
Microsoft.Office.Interop.Owc11;
5
6
namespace
FLX.ComplexQuery
7
{
8
/**/
///
<summary>
9
///
彭建军
10
///
根据数据动态生成图形(柱形图、饼图、曲线图)
11
///
2008-06-19
12
///
</summary>
13
public
class
ShowChart
14
{
15
属性
#region
属性
16
private
string
_phaysicalimagepath;
//
图片存放路径
17
private
string
_title;
//
图片标题
18
private
string
_xtitle;
//
图片x座标名称
19
private
string
_ytitle;
//
图片y座标名称
20
private
string
_seriesname;
//
图例名称
21
private
int
_picwidth;
//
图片宽度
22
private
int
_pichight;
//
图片高度
23
private
DataTable _datasource;
//
图片数据源
24
private
string
strCategory;
//
图片数据源的分类
25
private
string
strValue;
//
图片数据源的值
26
27
/**/
///
<summary>
28
///
图片存放路径
29
///
</summary>
30
public
string
PhaysicalImagePath
31
{
32
set
{_phaysicalimagepath
=
value;}
33
get
{
return
_phaysicalimagepath;}
34
}
35
/**/
///
<summary>
36
///
图片标题
37
///
</summary>
38
public
string
Title
39
{
40
set
{_title
=
value;}
41
get
{
return
_title;}
42
}
43
/**/
///
<summary>
44
///
图片标题
45
///
</summary>
46
public
string
XTitle
47
{
48
set
{_xtitle
=
value;}
49
get
{
return
_xtitle;}
50
}
51
/**/
///
<summary>
52
///
图片标题
53
///
</summary>
54
public
string
YTitle
55
{
56
set
{_ytitle
=
value;}
57
get
{
return
_ytitle;}
58
}
59
60
/**/
///
<summary>
61
///
图例名称
62
///
</summary>
63
public
string
SeriesName
64
{
65
set
{_seriesname
=
value;}
66
get
{
return
_seriesname;}
67
}
68
/**/
///
<summary>
69
///
图片宽度
70
///
</summary>
71
public
int
PicWidth
72
{
73
set
{_picwidth
=
value;}
74
get
{
return
_picwidth;}
75
}
76
/**/
///
<summary>
77
///
图片高度
78
///
</summary>
79
public
int
PicHight
80
{
81
set
{_pichight
=
value;}
82
get
{
return
_pichight;}
83
}
84
/**/
///
<summary>
85
///
图片数据源
86
///
</summary>
87
public
DataTable DataSource
88
{
89
set
90
{
91
_datasource
=
value;
92
strCategory
=
GetColumnsStr(_datasource);
93
strValue
=
GetValueStr(_datasource);
94
}
95
get
{
return
_datasource;}
96
}
97
/**/
///
<summary>
98
///
图片数据源的分类
99
///
</summary>
100
private
string
GetColumnsStr(DataTable dt)
101
{
102
StringBuilder strList
=
new
StringBuilder();
103
foreach
(DataRow r
in
dt.Rows)
104
{
105
strList.Append(r[
0
].ToString()
+
'
\t
'
);
106
}
107
return
strList.ToString();
108
}
109
/**/
///
<summary>
110
///
图片数据源的值
111
///
</summary>
112
private
string
GetValueStr(DataTable dt)
113
{
114
StringBuilder strList
=
new
StringBuilder();
115
foreach
(DataRow r
in
dt.Rows)
116
{
117
strList.Append(r[
1
].ToString()
+
'
\t
'
);
118
}
119
return
strList.ToString();
120
}
121
122
#endregion
123
124
构造函数
#region
构造函数
125
public
ShowChart()
126
{
127
//
128
//
TODO: 在此处添加构造函数逻辑
129
//
130
}
131
132
public
ShowChart(
string
PhaysicalImagePath,
string
Title,
string
XTitle,
string
YTitle,
string
SeriesName)
133
{
134
_phaysicalimagepath
=
PhaysicalImagePath;
135
_title
=
Title;
136
_xtitle
=
XTitle;
137
_ytitle
=
YTitle;
138
_seriesname
=
SeriesName;
139
}
140
#endregion
141
142
输出柱形图
#region
输出柱形图
143
/**/
///
<summary>
144
///
柱形图
145
///
</summary>
146
///
<returns></returns>
147
public
string
CreateColumn()
148
{
149
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace
=
new
Microsoft.Office.Interop.Owc11.ChartSpaceClass();
//
创建ChartSpace对象来放置图表
150
Microsoft.Office.Interop.Owc11.ChChart objChart
=
objCSpace.Charts.Add(
0
);
//
在ChartSpace对象中添加图表,Add方法返回chart对象
151
152
//
指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
//
Microsoft.Office.Interop.OWC.ChartChartTypeEnum
153
objChart.Type
=
Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;
154
155
//
指定图表是否需要图例
156
objChart.HasLegend
=
true
;
157
158
//
标题
159
objChart.HasTitle
=
true
;
160
objChart.Title.Caption
=
_title;
161
//
objChart.Title.Font.Bold=true;
162
//
objChart.Title.Font.Color="blue";
163
164
165
样式设置
#region
样式设置
166
167
//
旋转
168
//
objChart.Rotation = 360;
//
表示指定三维图表的旋转角度
169
//
objChart.Inclination = 10;
//
表示指定三维图表的视图斜率。有效范围为 -90 到 90
170
171
//
背景颜色
172
//
objChart.PlotArea.Interior.Color = "red";
173
174
//
底座颜色
175
//
objChart.PlotArea.Floor.Interior.Color = "green";
176
//
177
//
objChart.Overlap = 50;
//
单个类别中标志之间的重叠量
178
179
#endregion
180
181
//
x,y轴的图示说明
182
objChart.Axes[
0
].HasTitle
=
true
;
183
objChart.Axes[
0