您的位置:首页 > 其它

利用office web component打造精品图表

2005-02-24 22:07 519 查看
function StorePage()
{
d=document;
t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');
void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));
keyit.focus();
}

利用office web component打造精品图表(一)
大家在编写ASP程序的时候,可能要对各
种指标以图形的方式显示出来。如果仅仅
是柱状图,可以采用画表格的方法。许多投票
程序多采用这种方法。如果是饼状图或从数据
库中检索数据后再显示,就有些困难了.办法
也有,自己可以封装excel来完成上述功能,或
者用deiphi做一个activeform传入参数,或者用php
来写,java也可以。当然,用一个比较成熟的图形
组件来完成更好一些。microsoft office web
compoent非常不错。我在开发一个项目的时
候,用到了这个组件。

CHART.ASP程序。

<% Option Explicit %>
<!--#include file="adovbs.inc"-->
<HTML>
<HEAD>
<TITLE>柱状图的例子</TITLE>
<%
Function ExportChartToGIF(objCSpace, strAbsFilePath, strRelFilePath)
Dim strFileName
Randomize
strFileName = Timer & Rnd & ".gif"
objCSpace.ExportPicture strAbsFilePath
& "/" & strFileName, "gif", 650, 400
ExportChartToGIF = strRelFilePath
& "/" & strFileName
End Function

Sub CleanUpGIF(GIFpath)
Dim objFS
Dim objFolder
Dim gif
set objFS = Server.CreateObject("Scripting.FileSystemObject")
set objFolder = objFS.GetFolder(GIFpath)
for each gif in objFolder.Files
if instr(gif.Name, ".gif") > 0 and
DateDiff("n", gif.DateLastModified, now) > 10 then
objFS.DeleteFile GIFpath & "/" & gif.Name, True
end if
next
set objFolder = nothing
set objFS = nothing
End Sub

%>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<div align="center">
<br>
<br>
<%
dim sj1,sj2
sj1=Request.QueryString("s1")
sj2=Request.QueryString("s2")

dim objChartSpace
dim objChart
dim objSeries
dim objConn
dim objRS
dim c
dim series
dim strChartAbsPath
dim strChartRelPath
dim strChartFile
dim axis

strChartAbsPath = Server.MapPath("/xjsi-web/dcss/chart")
strChartRelPath = "/xjsi-web/dcss/chart"
'设置组件

set objChartSpace = Server.CreateObject("OWC.Chart")
set objChart = objChartSpace.Charts.Add
set c = objChartSpace.Constants

objChartSpace.Border.Color="red"
'以柱状图显示
objchart.type=1
objChart.HasLegend = True'是否显示图例
objChartSpace.HasChartSpaceTitle=true '显示标题
objChartSpace.ChartSpaceTitle.Caption ="柱状图的例子使用office web组件--www.ourfly.com中文技术网站"
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open application("strconn")
set objRS = Server.CreateObject("ADODB.Recordset")
set objRS.ActiveConnection = objConn
objRS.CursorType = adOpenStatic
objRS.CursorLocation = adUseClient
objRS.Open "select dwsj,sum(jfrs) as jfrs
from dcss_do_jfgcfxb where dwsj>='"&sj1&"'
and dwsj<'"&sj2&"'
group by dwsj order by dwsj asc"

set objChartSpace.DataSource = objRS
'显示图例内容
objChart.SetData c.chDimSeriesNames, 0, "jfrs"
for each objSeries in objChart.SeriesCollection
objSeries.SetData c.chDimCategories, 0, "dwsj"
objSeries.SetData c.chDimValues, 0, "jfrs"
next

for each axis in objChart.Axes
axis.HasTitle = True
if axis.Type = c.chCategoryAxis then
axis.Title.Caption = "月份"
else
axis.Title.Caption = "人数"
end if
next

strChartFile = ExportChartToGIF(objChartSpace, strChartAbsPath, strChartRelPath)
Response.Write "<IMG SRC=""" & strChartFile & """>" & "<P>"
CleanUpGIF strChartAbsPath

objRS.Close
set objRS = nothing
set objConn = nothing
set objSeries = nothing
set objChart = nothing
set objChartSpace = nothing
%>
</div>
</BODY>
</HTML>
使用这个组件的注意事项:
1。在office2000的光盘上,有一个msowc.msi的可执行文件.OK
2。建议大家用visual interdev6.0开发,代码的自动提示功能此时会发挥出极大的作用。

效果图如下:

OWC介绍:

Microsoft Office 2000中包含有一组称为OWC的新控件集合。利用这些组件,可以在WEB浏览器以及其他传统的编程环境下创建许多有用的数据分析解决方案与报表生成解决方案。
Office Web Component是一组COM(Component Object Model:组件对象模型)控件的集合,用于为多种控件容器提供交互式的电子数据表模型、数据库报表与数据可视化服务。
OWC库中包含四个主要组件:Spreadsheet(电子数据表)组件、Chart(图表)组件、PivotTable(数据透视表)组件、Data Source(数据源)组件。
Office Web Components的非凡之处在于它们可以在诸如Web页面、Visual Basic表单等的控件容器中使用,也可在内存中作为不可见对象使用。大多数COM控件只能在控件容器中作为可视控件使用,而大多数不可见对象则只能在内存中使用,而不能放入表单中或Web页面中。OWC库中的组件可以以以上两种方式被使用,从而使得用户可以以界面方式引用控件,或者使控件为其提供基本服务。以不可见对象方式使用组件的能力也可以方便的在服务器上使用这个库,从而轻易的产生在任何Web浏览器上查看静态内容。
OWC中的所有控件都支持丰富的编程接口集合,使得开发者可以通过Microsoft VBScript、Microsoft Jscript、Microsoft VBA、Java、C++与任何其他可调用双向或快速COM接口的语言来调用这些控件。

Chart组件:

Chart组件是一个由开发Microsoft Excel 2000中图表制作的开发人员创建的一个COM控件。它能以屏幕上COM控件与内存中GIF生成引擎两种方式提供基本的商业图表制作方法。
在OWC9中,Chart控件除支持Excel中的所有二维图表类型(Contour类型除外)外,还支持Polar型、Stacked Pie型、Filled Scatter型的图表。但是不包含对任何三维图表类型或效果的支持。
Office2000提供的Office Web Component的版本为9.0(OWC9)
OfficeXP提供的Office Web Component的版本为10.0(OWC10)

在以后的系列教程中,我们以sqlserver中的northwind数据库为例子,深入浅出的来介绍MS OWC,所有的例子直接可以运行。

我们通过一个例子来展现owc的强大功能.
CHART.ASP程序。
<% Option Explicit %>
<!--#include file="adovbs.inc"-->
<HTML>
<HEAD>
<TITLE>利用MS office web component打造精品图表</TITLE>
<%
Function ExportChartToGIF(objCSpace, strAbsFilePath, strRelFilePath)
Dim strFileName
Randomize
strFileName = Timer & Rnd & ".gif"
objCSpace.ExportPicture strAbsFilePath & "/" & strFileName, "gif", 650, 400
ExportChartToGIF = strRelFilePath & "/" & strFileName
End Function

Sub CleanUpGIF(GIFpath)
Dim objFS
Dim objFolder
Dim gif
set objFS = Server.CreateObject("Scripting.FileSystemObject")
set objFolder = objFS.GetFolder(GIFpath)
for each gif in objFolder.Files
if instr(gif.Name, ".gif") > 0 and DateDiff("n", gif.DateLastModified, now) > 10 then
objFS.DeleteFile GIFpath & "/" & gif.Name, True
end if
next
set objFolder = nothing
set objFS = nothing
End Sub

%>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<div align="center">
<br>
<br>
<%

dim objChartSpace
dim objChart
dim objSeries
dim objConn
dim objRS
dim c
dim series
dim strChartAbsPath
dim strChartRelPath
dim strChartFile
dim axis
dim fnt
dim ax

strChartAbsPath = Server.MapPath(".")
strChartRelPath = Server.MapPath(".")
'设置组件
'使用了owc9,也就是office 2000中带的
set objChartSpace = Server.CreateObject("OWC.Chart.9")
set objChart = objChartSpace.Charts.Add
set c = objChartSpace.Constants

'图形边框颜色
objchart.Border.Color="red"
'以柱状图显示
objchart.type=1
objChart.HasLegend = True'是否显示图例
objChart.HasTitle=true '显示标题
objChart.Title.Caption ="利用office web component打造精品图表(www.ourfly.com中文技术网站)"
set fnt=objchart.title.font
fnt.name="宋体"
fnt.size=12
fnt.bold=true
fnt.color="red"

set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "provider=SQLOLEDB; Data Source=yang; Initial Catalog=northwind; User Id=sa; Password="

set objRS = Server.CreateObject("ADODB.Recordset")
set objRS.ActiveConnection = objConn
objRS.CursorType = adOpenStatic
objRS.CursorLocation = adUseClient
'统计每种供应货物的数量有多少
objRS.Open "select count(productname) as col,
CategoryName from products,categories whereproducts.categoryid=categories.categoryid
group by categoryname"

set objChartSpace.DataSource = objRS
'显示图例内容
objChart.SetData c.chDimSeriesNames, 0, "CategoryName"
for each objSeries in objChart.SeriesCollection
objSeries.SetData c.chDimCategories, 0, "CategoryName"
objSeries.SetData c.chDimValues, 0, "col"
next

set ax=objChart.Axes(c.chAxisPositionBottom)
ax.hastitle=true
ax.Title.Caption = "种类"
set fnt=ax.title.font
fnt.name="宋体"
fnt.size=15
fnt.bold=true
fnt.color="blue"

set ax=objChart.Axes(c.chCategoryAxis)
ax.hastitle=true
ax.Title.Caption = "数量"
set fnt=ax.title.font
fnt.name="宋体"
fnt.size=15
fnt.bold=true
fnt.color="green"

strChartFile = ExportChartToGIF(objChartSpace, strChartAbsPath, strChartRelPath)
Response.Write "<IMG SRC=""" & strChartFile & """>" & "<P>"
CleanUpGIF strChartAbsPath

objRS.Close
set objRS = nothing
set objConn = nothing
set objSeries = nothing
set objChart = nothing
set objChartSpace = nothing
%>
</div>
</BODY>
</HTML>

使用这个组件的注意事项:
1。在office2000的光盘上,有一个msowc.msi的可执行文件.OK
2。建议大家用visual interdev6.0开发,代码的自动提示功能
此时会发挥出极大的作用。

效果图如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: