最近在生成統計圖的時候,使用ASP+vml生成折線圖統計的那種,最後生成發現結果不能滿足我的全部要求,因為我的數據中有負數,所以出現的結果出現在下面,看不到具體的縱坐標,所以放棄。最後想的了用Microsoft Office Web Components控件生成統計圖。
Microsoft Office Web Components控件下載地址:http://www.ASPprogram.cn/html/soft/2009425211607.Html
注意一下,此owc版本是owc11,用於Office2003,其他版本的owc大家去網上去下載。
使用的時候要注意一下客戶端Office版本:OWC各種不同版本的"classid"如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD Html 4.01 Transitional//EN">
<Html>
<head>
<meta http-equiv="Content-Type" content="text/Html; charset=gb2312">
<title>ASP中利用OWC控件實現各種統計圖</title>
</head>
<body>
<%
'下面測試的是一個產品銷量圖
MX1 = "A產品,B產品,C產品,D產品" '數據項目名數組(給出測試數據,實際用的時候從數據庫讀取用","分隔)
MX2 = "50,60,20,80" '數據項目值數組
Datestr = "2005-3-24,2005-3-25,2005-3-26,2005-3-27,2005-3-28" '日期
SQARXLstr = "50,100,20,80,89" 'A產品2005-3-24 至 2005-3-28的銷量
SQARXLstr = SQARXLstr & "," & "40,60,20,90,70" 'B產品2005-3-24 至 2005-3-28的銷量
SQARXLstr = SQARXLstr & "," & "20,50,55,25,60" 'C產品2005-3-24 至 2005-3-28的銷量
SQARXLstr = SQARXLstr & "," & "80,20,75,58,100" 'D產品2005-3-24 至 2005-3-28的銷量
%>
<br>
<center><object id="ChartSpace1" classid="CLSID:0002E55D-0000-0000-C000-000000000046" ></object></center>
<br>
<center><object id="ChartSpace2" classid="CLSID:0002E55D-0000-0000-C000-000000000046" ></object></center>
<br>
<center><object id="ChartSpace3" classid="CLSID:0002E55D-0000-0000-C000-000000000046" ></object></center>
<script language="vbscript">
Sub Window_OnLoad()
'------------------餅圖-------------------------------------------------------------
'為數據賦值
categorIEs = split("<%=MX1%>",",") '數據項目名數組
values = split("<%=MX2%>",",") '數據項目值數組
Set cht = ChartSpace1.Charts.Add '添加一個圖標對象
Set c = ChartSpace1.Constants '返回一個對象,此對象允許腳本用戶使用已命名的常量。
cht.Type = c.chChartTypePIE '設置圖表類型為餅圖
'-------設置圖表標題----------------------------------------
ChartSpace1.HasChartSpaceTitle = True '指定圖表工作區中包含標題
ChartSpace1.ChartSpaceTitle.Caption = "餅狀圖" '設置圖表工作區標題內容
'有關字體的設置
ChartSpace1.ChartSpaceTitle.Font.Bold = True '設置圖表工作區標題內容是否粗體
ChartSpace1.ChartSpaceTitle.Font.Color = "blue" '設置圖表工作區標題的顏色
ChartSpace1.ChartSpaceTitle.Font.Italic = False '設置圖表工作區標題是否為斜體
ChartSpace1.ChartSpaceTitle.Font.Name = "隸書" '設置圖表工作區標題內容的字體
ChartSpace1.ChartSpaceTitle.Font.Size = 18 '設置圖表工作區標題內容的大小(單位:磅)
ChartSpace1.ChartSpaceTitle.Font.Underline = c.owcUnderlineStyleSingle '設置下劃線屬性
'-------設置圖例--------------------------------------------
cht.HasLegend = True '指定圖表工作區中含有圖例
cht.Legend.Font.Size = 9 '其他有關字體項的設置參見設置圖表標題部分
cht.Legend.Position = c.chLegendPositionRight '設置圖例對其方式
cht.SetData c.chDimCategories, c.chDataLiteral, categorIEs
cht.SerIEsCollection(0).SetData c.chDimValues, c.chDataLiteral, values
Set dl = cht.SerIEsCollection(0).DataLabelsCollection.Add '添加圖例的數據標記
dl.HasValue = False
dl.HASPercentage = True
dl.Font.Size = 11
'------------------餅圖(結束)------------------------------------------------
'------------------簇狀柱型圖(開始)--------------------------------------
Set cht = ChartSpace2.Charts.Add '添加一個圖標對象
Set c = ChartSpace2.Constants '返回一個對象,此對象允許腳本用戶使用已命名的常量。
cht.Type = c.chChartTypeColumnClustered '設置圖表類型為折線圖
'-------設置圖表標題----------------------------------------
ChartSpace2.HasChartSpaceTitle = True '指定圖表工作區中包含標題
ChartSpace2.ChartSpaceTitle.Caption = "柱狀圖" '設置圖表工作區標題內容
'有關字體的設置
ChartSpace2.ChartSpaceTitle.Font.Bold = True '設置圖表工作區標題內容是否粗體
ChartSpace2.ChartSpaceTitle.Font.Color = "blue" '設置圖表工作區標題的顏色
ChartSpace2.ChartSpaceTitle.Font.Italic = False '設置圖表工作區標題是否為斜體
ChartSpace2.ChartSpaceTitle.Font.Name = "隸書" '設置圖表工作區標題內容的字體
ChartSpace2.ChartSpaceTitle.Font.Size = 18 '設置圖表工作區標題內容的大小(單位:磅)
ChartSpace2.ChartSpaceTitle.Font.Underline = c.owcUnderlineStyleSingle '設置下劃線屬性
cht.SetData c.chDimCategories, c.chDataLiteral, categorIEs '橫項(分類軸)
cht.SerIEsCollection(0).SetData c.chDimValues, c.chDataLiteral, values
Set dl = cht.SerIEsCollection(0).DataLabelsCollection.Add '添加圖例的數據標記
dl.HasValue = True
dl.HASPercentage = False
dl.Font.Size = 9
dl.Font.Color = "red"
dl.Position = c.chLegendPositionRight
'設置縱向數值屬性
Set categoryAxis = cht.Axes(c.chAxisPositionBottom)
categoryAxis.Font.Size = 9
'設置分類組屬性
Set categoryAxis = cht.Axes(c.chAxisPositionLeft)
categoryAxis.Font.Size = 9
'------------------簇狀柱型圖(結束)--------------------------------------
'------------------折線圖----------------------------------------------------------
SParr = split("<%=MX1%>",",")
Datearr = split("<%=Datestr%>",",")
Set cht = ChartSpace3.Charts.Add '添加一個圖標對象
Set c = ChartSpace3.Constants '返回一個對象,此對象允許腳本用戶使用已命名的常量。
cht.Type = c.chChartTypeLineMarkers '設置圖表類型為折線圖
'-------設置圖表標題----------------------------------------
ChartSpace3.HasChartSpaceTitle = True '指定圖表工作區中包含標題
ChartSpace3.ChartSpaceTitle.Caption = "日銷量折線圖" '設置圖表工作區標題內容
'有關字體的設置
ChartSpace3.ChartSpaceTitle.Font.Bold = True '設置圖表工作區標題內容是否粗體
ChartSpace3.ChartSpaceTitle.Font.Color = "blue" '設置圖表工作區標題的顏色
ChartSpace3.ChartSpaceTitle.Font.Italic = False '設置圖表工作區標題是否為斜體
ChartSpace3.ChartSpaceTitle.Font.Name = "隸書" '設置圖表工作區標題內容的字體
ChartSpace3.ChartSpaceTitle.Font.Size = 18 '設置圖表工作區標題內容的大小(單位:磅)
ChartSpace3.ChartSpaceTitle.Font.Underline = c.owcUnderlineStyleSingle '設置下劃線屬性
'-------設置圖例--------------------------------------------
cht.HasLegend = True '指定圖表工作區中含有圖例
cht.Legend.Font.Size = 9 '其他有關字體項的設置參見設置圖表標題部分
cht.Legend.Position = c.chLegendPositionBottom '設置圖例對其方式
cht.SetData c.chDimSerIEsNames, c.chDataLiteral, SParr '系列
cht.SetData c.chDimCategorIEs, c.chDataLiteral, Datearr '橫項(分類軸)
'設置縱向數值屬性
Set categoryAxis = cht.Axes(c.chAxisPositionBottom)
categoryAxis.Font.Size = 9
'設置分類組屬性
Set categoryAxis = cht.Axes(c.chAxisPositionLeft)
categoryAxis.Font.Size = 9
values = split("<%=SQARXLstr%>",",")
for i = 0 to ubound(SParr)
valuetemp = ""
for j = i*(ubound(Datearr)+1) to (i+1)*(ubound(Datearr)+1)-1 '按天讀取數據
valuetemp = valuetemp & "," & values(j)
next
valuearr = split(mid(valuetemp,2),",")
cht.SerIEsCollection(i).SetData c.chDimValues, c.chDataLiteral, valuearr
Set dl = cht.SerIEsCollection(i).DataLabelsCollection.Add '添加圖例的數據標記
dl.HasValue = True
dl.HASPercentage = False
dl.Font.Size = 9
next
'------------------折線圖(結束)---------------------------------------------------
End Sub
</script>
</body>
</Html>