程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> asp利用OWC控件實現的各種統計圖代碼

asp利用OWC控件實現的各種統計圖代碼

編輯:ASP技巧

最近在生成統計圖的時候,使用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"如下:

 Office 版本  OWC版本   classid  Office 2000  owc9   CLSID:0002E556-0000-0000-C000-000000000046  Office XP   owc10  CLSID:0002E556-0000-0000-C000-000000000046  Office 2003   owc11  CLSID:0002E55D-0000-0000-C000-000000000046以下紅色的代碼的地方,根據不同的Office版本,使用不同的owc版本,更換上面的classid。
下面是owc生成的餅狀圖,柱狀圖,折線圖代碼

<!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> 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved