1
<
%
2
'
生成各种圖型的png圖片
3
class owc
4
private
o
5
private
PicType
6
7
'
創建時自動create owc
8
Private
Sub
Class_Initialize()
9
set
o
=
Server.CreateObject(
"
OWC11.ChartSpace
"
)
10
PicType
=
"
PNG
"
'
生成的圖片格式
11
End Sub
12
'
實例終止時自動設為nothing
13
Private
Sub
Class_Terminate
14
set
o
=
nothing
15
End Sub
16
'
畫圖矩形圖
17
'
chart_bgcolor_圖表的背景顏色
18
'
chartCaption_圖表的標題
19
'
chartCaption_fontColor_圖表標題顏色
20
'
Interior_Color_矩形內的填充顏色
21
'
Caption_名稱
22
'
categories_名稱數組
23
'
values_值數組串
24
public
sub
bar(chart_bgcolor_,chartCaption_,chartCaption_fontColor_,Interior_Color_,Caption_,categories_,values_,width_,height_)
25
On
Error
Resume
Next
26
Response.Expires
=
0
27
Response.Buffer
=
True
28
Response.Clear
29
o.Clear
30
set
cht
=
o.Charts.Add
31
set
c
=
o.Constants
32
cht.Type
=
c.chChartTypeColumnClustered
33
'
設背景色或是填充
34
o.Charts(
0
).PlotArea.Interior.SetSolid chart_bgcolor_
35
36
'
加上圖表的標題
37
o.HasChartSpaceTitle
=
True
38
set
cst
=
o.ChartSpaceTitle
39
cst.Caption
=
chartCaption_
40
cst.Font.Color
=
chartCaption_fontColor_
41
cst.Font.Italic
=
False
42
cst.Font.Name
=
"
Arial
"
43
cst.Font.Size
=
12
44
cst.Font.Underline
=
c.owcUnderlineStyleSingle
45
46
'
添加數據
47
cht.SetData c.chDimCategories, c.chDataLiteral, categories_
48
cht.SeriesCollection(
0
).SetData c.chDimValues, c.chDataLiteral, values_
49
'
直條的背景色進行設定
50
set
sc
=
o.Charts(
0
).SeriesCollection(
0
)
51
sc.Interior.Color
=
Interior_Color_
52
53
'
直條上的顯示設置
54
sc.Caption
=
Caption_
55
set
dl
=
cht.SeriesCollection(
0
).DataLabelsCollection.Add
56
dl.HasValue
=
True
57
dl.HasPercentage
=
False
58
dl.Font.Size
=
9
59
dl.Font.Color
=
"
red
"
60
dl.Position
=
c.chLegendPositionRight
61
dl.NumberFormat
=
"
00.00%
"
62
'
左邊百分比的屬性設置
63
Set
cta
=
cht.Axes(c.chAxisPositionLeft)
64
cta.Font.Size
=
9
65
cta.NumberFormat
=
"
0.0%
"
66
cta.MajorUnit
=
0.1
67
68
Response.ContentType
=
"
image/
"
&
PicType
69
Response.BinaryWrite o.GetPicture(PicType,width_,height_)
70
end sub
71
'
多系列矩形圖
72
'
chart_bgColor_圖表的背景顏色
73
'
chartCaption_圖表的標題
74
'
chartCaption_fontColor_圖表標題顏色
75
'
color_顏色數組
76
'
caption_名稱數組
77
'
categories_名稱數組
78
'
values_值數組
79
public
sub
serBar(chart_bgColor_,chartCaption_,chartCaption_fontColor_,color_,caption_,categories_,values_,width_,height_)
80
On
Error
Resume
Next
81
Response.Expires
=
0
82
Response.Buffer
=
True
83
Response.Clear
84
o.Clear
85
o.Charts.Add
86
Set
c
=
o.Constants
87
'
圖表的類型
88
o.Charts(
0
).type
=
c.chChartTypeColumnClustered
89
'
給繪圖區加背景色
90
o.Charts(
0
).PlotArea.Interior.SetSolid chart_bgColor_
91
'
'加上圖表的標題
92
o.HasChartSpaceTitle
=
True
93
o.ChartSpaceTitle.Caption
=
chartCaption_
94
'
標題的屬性
95
o.ChartSpaceTitle.Font.Color
=
chartCaption_fontColor_
96
o.ChartSpaceTitle.Font.Italic
=
False
97
o.ChartSpaceTitle.Font.Name
=
"
Arial
"
98
o.ChartSpaceTitle.Font.Size
=
12
99
o.ChartSpaceTitle.Font.Underline
=
c.owcUnderlineStyleSingle
100
'
用循環來新增SeriesCollection以及里面的內容
101
for
i
=
0
to
ubound
(caption_)
102
valuetemp
=
""
103
for
j
=
i
*
(
ubound
(categories_)
+
1
)
to
(i
+
1
)
*
(
ubound
(categories_)
+
1
)
-
1
104
valuetemp
=
valuetemp
&
"
,
"
&
values_(j)
105
next
106
valuearr
=
split
(
mid
(valuetemp,
2
),
"
,
"
)
107
o.Charts(
0
).SeriesCollection.Add
108
o.Charts(
0
).SeriesCollection(i).Caption
=
caption_(i)
109
o.Charts(
0
).SeriesCollection(i).Interior.Color
=
color_(i)
110
o.Charts(
0
).SeriesCollection(i).SetData c.chDimCategories, c.chDataLiteral, categories_
111
o.Charts(
0
).SeriesCollection(i).SetData c.chDimValues, c.chDataLiteral, valuearr
112
set
dl
=
o.Charts(
0
).SeriesCollection(i).DataLabelsCollection.Add
113
dl.HasValue
=
True
114
dl.HasPercentage
=
False
115
dl.Font.Size
=
9
116
dl.Font.Color
=
"
red
"
117
dl.Position
=
c.chLegendPositionRight
118
dl.NumberFormat
=
"
00.00%
"
119
next
120
'
'圖例的設定
121
o.Charts(
0
).HasLegend
=
True
122
o.Charts(
0
).Legend.Font.Size
=
9
123
o.Charts(
0
).Legend.Position
=
c.chLegendPositionBottom
124
'
'左邊百分比的屬性設置
125
Set
cta
=
o.Charts(
0
).Axes(c.chAxisPositionLeft)
126
cta.Font.Size
=
9
127
cta.NumberFormat
=
"
0.00%
"
128
cta.MajorUnit
=
0.1
129
Response.ContentType
=
"
image/
"
&
PicType
130
response.BinaryWrite o.GetPicture(PicType,width_,height_)
131
end sub
132
'
畫圓餅圖
133
'
chart_bgColor_繪圖區加背景色
134
'
chartCaption_圖表的標題
135
'
chartCaption_fontColor_圖表標題顏色
136
public
sub
Pie(chart_bgColor_,chartCaption_,chartCaption_fontColor_,Caption_,categories_,values_,width_,height_)
137
On
Error
Resume
Next
138
Response.Expires
=
0
139
Response.Buffer
=
True
140
Response.Clear
141
o.Clear
142
Set
cht
=
o.Charts.Add
143
Set
c
=
o.Constants
144
cht.Type
=
c.chChartTypePie3d
145
'
給繪圖區加背景色
146
o.Charts(
0
).PlotArea.Interior.SetSolid chart_bgColor_
147
cht.ExtrudeAngle
=
90
148
cht.ChartDepth
=
169
149
cht.AspectRatio
=
120
150
cht.Rotation
=
180
151
cht.Inclination
=
70
152
153
o.HasChartSpaceTitle
=
True
154
o.ChartSpaceTitle.Caption
=
chartCaption_
155
o.ChartSpaceTitle.Font.Color
=
chartCaption_fontColor_
156
o.ChartSpaceTitle.Font.Name
=
"
Arial
"
157
o.ChartSpaceTitle.Font.Size
=
12
158
o.ChartSpaceTitle.Font.Underline
=
c.owcUnderlineStyleSingle
159
160
cht.HasLegend
=
True
161
cht.Legend.Font.Size
=
9
162
cht.Legend.Position
=
c.chLegendPositionBottom
163
164
cht.SetData c.chDimCategories, c.chDataLiteral, categories_
165
cht.SeriesCollection(
0
).SetData c.chDimValues, c.chDataLiteral, values_
166
set
sc
=
o.Charts(
0
).SeriesCollection(
0
)
167
sc.Caption
=
Caption_
168
Set
dl
=
cht.SeriesCollection(
0
).DataLabelsCollection.Add
169
dl.Separator
=
"
:
"
170
dl.HasValue
=
false
171
dl.HasSeriesName
=
false
172
dl.HasCategoryName
=
true
173
dl.HasPercentage
=
true
174
dl.Font.Size
=
9
175
dl.Font.Color
=
"
red
"
176
dl.NumberFormat
=
"
00.00%
"
177
Response.ContentType
=
"
image/
"
&
PicType
178
response.BinaryWrite o.GetPicture(PicType,width_,height_)
179
end sub
180
'
拆線圖
181
'
chart_bgColor_繪圖區加背景色
182
'
chartCaption_圖表的標題
183
'
chartCaption_fontColor_圖表標題顏色
184
public
sub
line(chart_bgColor_,chartCaption_,chartCaption_fontColor_,Caption_,categories_,values_,width_,height_)
185
On
Error
Resume
Next
186
Response.Expires
=
0
187
Response.Buffer
=
True
188
Response.Clear
189
o.Clear
190
Set
cht
=
o.Charts.Add
191
Set
c
=
o.Constants
192
cht.Type
=
c.chChartTypeLineMarkers
193
'
給繪圖區加背景色
194
o.Charts(
0
).PlotArea.Interior.SetSolid chart_bgColor_
195
o.HasChartSpaceTitle
=
True
196
o.ChartSpaceTitle.Caption
=
chartCaption_
197
o.ChartSpaceTitle.Font.Color
=
chartCaption_fontColor_
198
o.ChartSpaceTitle.Font.Name
=
"
Arial
"
199
o.ChartSpaceTitle.Font.Size
=
12
200
o.ChartSpaceTitle.Font.Underline
=
c.owcUnderlineStyleSingle
201
202
cht.SetData c.chDimCategories, c.chDataLiteral, categories_
203
cht.SeriesCollection(
0
).SetData c.chDimValues, c.chDataLiteral, values_
204
205
set
sc
=
o.Charts(
0
).SeriesCollection(
0
)
206
sc.Caption
=
Caption_
207
Set
dl
=
cht.SeriesCollection(
0
).DataLabelsCollection.Add
208
dl.HasValue
=
True
209
dl.HasPercentage
=
False
210
dl.Font.Size
=
9
211
dl.Font.Color
=
"
red
"
212
213
Set
categoryAxis
=
cht.Axes(c.chAxisPositionBottom)
214
categoryAxis.Font.Size
=
9
215
216
Set
categoryAxis
=
cht.Axes(c.chAxisPositionLeft)
217
categoryAxis.Font.Size
=
9
218
Response.ContentType
=
"
image/
"
&
PicType
219
response.BinaryWrite o.GetPicture(PicType,width_,height_)
220
end sub
221
'
多系列拆線圖
222
'
chart_bgColor_圖表的背景顏色
223
'
chartCaption_圖表的標題
224
'
chartCaption_fontColor_圖表標題顏色
225
'
color_顏色數組
226
'
caption_名稱數組
227
'
categories_名稱數組
228
'
values_值數組
229
public
sub
serLine(chart_bgColor_,chartCaption_,chartCaption_fontColor_,color_,SeriesNames_,categories_,values_,width_,height_)
230
On
Error
Resume
Next
231
Response.Expires
=
0
232
Response.Buffer
=
True
233
Response.Clear
234
o.Clear
235
Set
cht
=
o.Charts.Add
236
Set
c
=
o.Constants
237
'
設置圖表類型
238
cht.Type
=
c.chChartTypeLineMarkers
239
'
給繪圖區加背景色
240
o.Charts(
0
).PlotArea.Interior.Color
=
chart_bgColor_
241
'
加上標題
242
o.HasChartSpaceTitle
=
True
243
o.ChartSpaceTitle.Caption
=
chartCaption_
244
o.ChartSpaceTitle.Font.Color
=
chartCaption_fontColor_
245
o.ChartSpaceTitle.Font.Name
=
"
Arial
"
246
o.ChartSpaceTitle.Font.Size
=
12
247
'
'添加數據
248
cht.SetData c.chDimSeriesNames, c.chDataLiteral, SeriesNames_
249
cht.SetData c.chDimCategories, c.chDataLiteral, Categories_
250
251
set
categoryAxis
=
cht.Axes(c.chAxisPositionBottom)
252
categoryAxis.Font.Size
=
9
253
254
Set
categoryAxis
=
cht.Axes(c.chAxisPositionLeft)
255
categoryAxis.Font.Size
=
9
256
257
for
i
=
0
to
ubound
(SeriesNames_)
258
valuetemp
=
""
259
for
j
=
i
*
(
ubound
(Categories_)
+
1
)
to
(i
+
1
)
*
(
ubound
(Categories_)
+
1
)
-
1
260
valuetemp
=
valuetemp
&
"
,
"
&
values_(j)
261
next
262
valuearr
=
split
(
mid
(valuetemp,
2
),
"
,
"
)
263
cht.SeriesCollection(i).SetData c.chDimValues, c.chDataLiteral, valuearr
264
cht.SeriesCollection(i).Line.Color
=
color_(i)
265
cht.SeriesCollection(i).Line.Weight
=
c.owcLineWeightThin
266
cht.SeriesCollection(i).Marker.Style
=
c.chMarkerStyleDiamond
267
cht.SeriesCollection(i).Interior.Color
=
color_(i)
268
Set
dl
=
cht.SeriesCollection(i).DataLabelsCollection.Add
269
dl.HasValue
=
true
270
dl.HasPercentage
=
false
271
dl.Font.Size
=
9
272
dl.font.color
=
"
red
"
273
next
274
Response.ContentType
=
"
image/
"
&
PicType
275
response.BinaryWrite o.GetPicture(PicType,width_,height_)
276
end sub
277
end
class
278
%
>
279
<
!
--
#include file
=
"
owc.asp
"
-->
<
%
'
Option Explicit
Response.buffer
=
true
Response.Expires
=
-
1
Response.AddHeader
"
Pragma
"
,
"
no-cache
"
Response.AddHeader
"
cache-ctrol
"
,
"
no-cache
"
chartType
=
request.QueryString(
"
chartType
"
)
select
case
chartType
case
"
bar
"
call
bar()
case
"
serbar
"
call
serbar()
case
"
pie
"
call
pie()
case
"
line
"
call
line()
case
"
serline
"
call
serline()
end
select
sub
bar()
On
Error
Resume
Next
set
o
=
new
owc
dim
chart_bgcolor,chartCaption,chartCaption_fontColor,Interior_Color,Caption,categories,values,width,height
chart_bgColor
=
request.QueryString(
"
chart_bgColor
"
)
if
chart_bgColor
=
""
then
chart_bgColor
=
"
#FFFFFF
"
chartCaption
=
request.QueryString(
"
chartCaption
"
)
chartCaption_fontColor
=
request.QueryString(
"
chartCaption_fontColor
"
)
Interior_Color
=
request.QueryString(
"
Interior_Color
"
)
Caption
=
request.QueryString(
"
Caption
"
)
categories
=
request.QueryString(
"
categories
"
)
values
=
request.QueryString(
"
values
"
)
width
=
request.QueryString(
"
width
"
)
if
width
=
""
then
width
=
"
400
"
height
=
request.QueryString(
"
height
"
)
if
height
=
""
then
height
=
"
300
"
dim
catarr,valarr
catarr
=
split
(categories,
"
,
"
)
valarr
=
split
(values,
"
,
"
)
o.bar chart_bgcolor,chartCaption,chartCaption_fontColor,Interior_Color,Caption,catarr,valarr,width,height
set
o
=
nothing
end sub
sub
serbar()
On
Error
Resume
Next
set
o
=
new
owc
dim
chart_bgcolor,chartCaption,chartCaption_fontColor,color,Caption,categories,values,width,height
chart_bgColor
=
request.QueryString(
"
chart_bgColor
"
)
if
chart_bgColor
=
""
then
chart_bgColor
=
"
#FFFFFF
"
chartCaption
=
request.QueryString(
"
chartCaption
"
)
chartCaption_fontColor
=
request.QueryString(
"
chartCaption_fontColor
"
)
color
=
request.QueryString(
"
color
"
)
Caption
=
request.QueryString(
"
Caption
"
)
categories
=
request.QueryString(
"
categories
"
)
values
=
request.QueryString(
"
values
"
)
width
=
request.QueryString(
"
width
"
)
if
width
=
""
then
width
=
"
400
"
height
=
request.QueryString(
"
height
"
)
if
height
=
""
then
height
=
"
300
"
dim
colarr,catarr,valarr
colarr
=
split
(color,
"
,
"
)
catarr
=
split
(categories,
"
,
"
)
valarr
=
split
(values,
"
,
"
)
o.serbar chart_bgColor,chartCaption,chartCaption_fontColor,colarr,catarr,valarr,values,width,height
set
o
=
nothing
end sub
sub
pie()
On
Error
Resume
Next
set
o
=
new
owc
dim
chart_bgcolor,chartCaption,chartCaption_fontColor,Caption,categories,values,width,height
chart_bgColor
=
request.QueryString(
"
chart_bgColor
"
)
if
chart_bgColor
=
""
then
chart_bgColor
=
"
#FFFFFF
"
chartCaption
=
request.QueryString(
"
chartCaption
"
)
chartCaption_fontColor
=
request.QueryString(
"
chartCaption_fontColor
"
)
Caption
=
request.QueryString(
"
Caption
"
)
categories
=
request.QueryString(
"
categories
"
)
values
=
request.QueryString(
"
values
"
)
width
=
request.QueryString(
"
width
"
)
if
width
=
""
then
width
=
"
400
"
height
=
request.QueryString(
"
height
"
)
if
height
=
""
then
height
=
"
300
"
dim
catarr,valarr
catarr
=
split
(categories,
"
,
"
)
valarr
=
split
(values,
"
,
"
)
o.pie chart_bgColor,chartCaption,chartCaption_fontColor,Caption,catarr,valarr,width,height
set
o
=
nothing
end sub
sub
line()
On
Error
Resume
Next
set
o
=
new
owc
dim
chart_bgcolor,chartCaption,chartCaption_fontColor,Caption,categories,values,width,height
chart_bgColor
=
request.QueryString(
"
chart_bgColor
"
)
if
chart_bgColor
=
""
then
chart_bgColor
=
"
#FFFFFF
"
chartCaption
=
request.QueryString(
"
chartCaption
"
)
chartCaption_fontColor
=
request.QueryString(
"
chartCaption_fontColor
"
)
Caption
=
request.QueryString(
"
Caption
"
)
categories
=
request.QueryString(
"
categories
"
)
values
=
request.QueryString(
"
values
"
)
width
=
request.QueryString(
"
width
"
)
if
width
=
""
then
width
=
"
400
"
height
=
request.QueryString(
"
height
"
)
if
height
=
""
then
height
=
"
300
"
dim
catarr,valarr
catarr
=
split
(categories,
"
,
"
)
valarr
=
split
(values,
"
,
"
)
o.line chart_bgColor,chartCaption,chartCaption_fontColor,Caption,catarr,valarr,width,height
set
o
=
nothing
end sub
sub
serline()
On
Error
Resume
Next
set
o
=
new
owc
dim
chart_bgcolor,chartCaption,chartCaption_fontColor,color,SeriesNames,categories,values,width,height
chart_bgColor
=
request.QueryString(
"
chart_bgColor
"
)
if
chart_bgColor
=
""
then
chart_bgColor
=
"
#FFFFFF
"
chartCaption
=
request.QueryString(
"
chartCaption
"
)
chartCaption_fontColor
=
request.QueryString(
"
chartCaption_fontColor
"
)
color
=
request.QueryString(
"
color
"
)
SeriesNames
=
request.QueryString(
"
SeriesNames
"
)
categories
=
request.QueryString(
"
categories
"
)
values
=
request.QueryString(
"
values
"
)
width
=
request.QueryString(
"
width
"
)
if
width
=
""
then
width
=
"
400
"
height
=
request.QueryString(
"
height
"
)
if
height
=
""
then
height
=
"
300
"
dim
colarr,serarr,catarr,valarr
colarr
=
split
(color,
"
,
"
)
serarr
=
split
(SeriesNames,
"
,
"
)
catarr
=
split
(categories,
"
,
"
)
valarr
=
split
(values,
"
,
"
)
o.serline chart_bgColor,chartCaption,chartCaption_fontColor,colarr,serarr,catarr,valarr,width,height
set
o
=
nothing
end sub
%
>
1
<
%@LANGUAGE
=
"
VBSCRIPT
"
CODEPAGE
=
"
950
"
%
>
2
<
!DOCTYPE html
PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
3
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
4
<
head
>
5
<
meta http
-
equiv
=
"
Content-Type
"
content
=
"
text/html; charset=big5
"
/>
6
<
title
>
test owc
</
title
>
7
</
head
>
8
9
<
body
>
10
<
%
11
url
=
"
chart.asp?chartType=bar
"
&
_
12
"
&chart_bgcolor=
"
&
server.URLEncode(
"
#FFFFFF
"
)
&
_
13
"
&chartCaption=
"
&
server.URLEncode(
"
報表標題
"
)
&
_
14
"
&chartCaption_fontColor=
"
&
server.URLEncode(
"
BLUE
"
)
&
_
15
"
&Interior_Color=
"
&
server.URLEncode(
"
#CCCC00
"
)
&
_
16
"
&Caption=
"
&
server.URLEncode(
"
組別
"
)
&
_
17
"
&categories=
"
&
server.URLEncode(
"
A2-1,A2-2,A2-3,A3-1,A3-2,A3-3,B2-1,B2-2,B2-3,B3-1,B3-2,B3-3,C2-1,C2-2,C3-1,C3-2,C3-3
"
)
&
_
18
"
&values=
"
&
server.urlencode(
"
0.813,0.689,0.800,0.833,0.681,0.864,0.743,0.894,0.822,0.874,0.746,0.908,0.850,0.728,0.731,0.734,0.624
"
)
&
_
19
"
&width=
"
&
server.urlencode(
"
800
"
)
&
_
20
"
&height=
"
&
server.URLEncode(
"
500
"
)
21
'
url="t.asp"
22
%
>
23
<
img src
=
"
<%=url %>
"
/>
24
</
body
>
25
</
html
>
26