|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。静态|服务器|图表 引:Web程序开辟中,常常必要从数据库表文件中提取数据,并对多量量的数据举行剖析对照,此时最经常使用也是最直不雅了然的体现办法莫过于绘制图表。
ASP善于服务器真个Web编程,操纵背景数据库更是它的刚强。可是用ASP制造及时数据库图表有点坚苦,由于ASP自己其实不撑持图表功效,只能借助第三方控件举行开辟,如VB的MSChart控件。而微软推出的及时数据库图表制造组件――OWC(MicrosoftOfficeWebComponents),为在Web中绘制图形供应了天真的同时也是最基础的机制。经由过程在ASP页面中挪用OWC,我们能够轻松地绘制出各类范例的及时图表。
本文同时先容了一种办法,就是将在ASP中天生的图表转换成图片文件保留在服务器上,如许用户终极看到的是GIF图片格局的图表,可制止间接输入静态图表到客户端时有大概带来的一系列成绩。同时,本文还先容了一种复杂而敏捷地移走过时GIF图片的办法。
上面我们会用一个详细的实例来讲明以上的内容。
程序的测试情况为:Windows2000Server+IIS5.0+Access+IE5.5中,要运转上面的ASP程序,请将上面的代码Copy,保留到你的一个假造目次中,在这个假造目次中创建一个子目次tmp(你大概修正代码中的路径以切合本人的路径),在IIS中设置read权限便可,注重在Windows2000Server上你必需设置此tmp目次对IUSR_servername用户最少有Change的权限。
⒈OWC撑持近50种图表范例,包含曲线图、折线图、柱状图、面积图、雷达图等,并给指定显现图表是不是带数据点。
⒉能够天真设置图表的各个元素,包含设置图表题目、左标注、下标注、图例及输入图片的巨细等;并可对一切显现的笔墨指定字体、字号、色彩和字形。
⒊统一张图表中显现2条以上的曲线,完成数据对照显现。
只管OWC的相干文件很零星,可是安装历程很复杂。我们必要一个正版受权的Office2000,然后在Web服务器上运转setup程序。选择定制安装,在工具题目下,只选中Web组件选项。固然,我们也能够在Web服务器上安装Office2000的完全版本,个中天然也就包括了Web组件。接着,Setup程序按次地完成别的事情,包含组件注册。
OWC的制图操纵是在一个图表空间举行的。一个图表空间能够包括一个或多个图表,每一个图表都大概包括一个或多个数列,每一个数列都能够包括一个或多个数据点。依据这个道理,起首创立一个图表空间工具,然后用它的Add办法向图表空间的图表汇合中增添一个图表。举行组件挪用时,在ASP文件中到场以下代码便可:
setchart=Server.CreateObject("OWC.Chart")
chart.clear
setochart=chart.Charts.Add
setoconst=chart.Constants
最初一行代码的目标是为了援用便利起见:图表空间有一个Constants属性,个中包括一切相干图表函数中利用的枚举常数;每次想要援用一个常数时,就能够键进oconst而不是objChartSpace.Constants,如许效力会更高,最少从工夫上讲是如许。关于常数的完全形貌,我们分离上面图表元素一同先容。
图表题目形貌图表的题目()。本题目能够位于图表的上方、下方、左方或右方。
oChart.HasTitle=true(指定是不是显现图表题目)
oChart.Title.Caption=“估计与实践发卖额”(指定显现的内容)
oChart.Title..Position=“Center”(指定位于图表的地位)
setfnt=ochart.title.font
fnt.name=“黑体”(指定图表题目的字体)
fnt.size=“10”(指定图表题目的字号)
fnt.color=“#000000”(指定图表题目的色彩)
fnt.bold=true(指定图表题目的字形――加粗)
fnt.italic=true(指定图表题目的字形――斜体)
数值(Y)轴题目是用于形貌数值轴器度内容的题目。
setax=ochart.Axes(oconst.chCategoryAxis)
ax.hastitle=true(显现数值轴题目)
ax.Title.Caption=“发卖额(单元:百万)”(设置数值轴题目的内容)
setfnt=ax.title.font(以下为设置数值轴题目的字体、字号、色彩、字形)
fnt.name=“黑体”
fnt.size=“10”
fnt.color=“#000000”
fnt.bold=true
fnt.italic=true
数值(Y)轴标记也称为刻度线标记。这些标记形貌了数值轴上的器度值。
ax.MajorTickMarks=oconst.chTickMarkNone(不显现数值轴次要刻度线)
ax.MajorGridlines.Line.Color="white"(设置指定坐标轴上主网格线的色彩和线宽)
ax.MajorGridlines.Line.Weight=5
分类(X)轴题目它是用于形貌分类轴绘制内容的题目。
setax=ochart.Axes(oconst.chAxisPositionBottom)
ax.hastitle=true(显现分类轴题目)
ax.Title.Caption=“季度”(设置分类轴题目的内容)
setfnt=ax.title.font(以下为设置分类轴题目的字体、字号、色彩、字形)
fnt.name=“黑体”
fnt.size=“10”
fnt.color=“#000000”
fnt.bold=true
fnt.italic=true
分类(X)标记也称为刻度线标记。这些标记显现了分类轴上的分类称号。分类是由图表中每一个数据系列的一个数据点组成的一组相干数据点。
ax.Position=oconst.chAxisPositionBottom(指定分类标记的显现地位,对有些图表显现范例,该设定不起感化。指定图表显现范例为折线型时可看到设定的效果)
分类标记显现内容的设置见“数据标记”。
图例为图表中数据系列或分类指定的图案或色彩标示。
ochart.HasLegend=True(显现图例)
oChart.Legend.Position=oconst.
chLegendPositionLeft(设置图例的地位在右边,地位可修正)
系列称号是一个称号,用于形貌组成一个数据系列的一组相干数据点。系列称号显现在图例项标识旁的图例中。在后面的图暗示例中,“估计”和“实践”都是对应于图表中数据标志的系列称号。
setfnt=oChart.Legend.Font(以下为设置系列称号的字体、字号、色彩、字形)
fnt.name=“黑体”
fnt.size=“10”
fnt.color=“#000000”
fnt.bold=true
fnt.italic=true
数据标记它是用于供应有关数据标志附加信息的标记,而个中的数据标志则代表单个数据点或值。关于分歧的图表范例,数据标记能够显现值、数据系列或分类的称号、百分比,大概显现这些项的组合。
setoseries(i)=oChart.SeriesCollection.add天生一条series曲线
withoseries(i)
.DataLabelsCollection.Add(在指定系列中增加数据标记)
.caption=“XXXX”(设置分类标记显现的详细内容)
.SetDataoconst.chDimCategories,oconst.chDataLiteral,XXX(设置X轴的数据值)
.SetDataoconst.chDimValues,oconst.chDataLiteral,XXX(设置Y轴的数据值)
.type=0(设置图表显现的范例,0暗示一般柱形图)
endwith
对比图片,我们能够晓得,X轴为日期(季度),Y轴为发卖额,画图区为详细的发卖额数据。
OWC撑持在统一张图表中显现两条以上的曲线(或两个分歧色彩的柱子,如上图所示的估计与实践)。因而,要天生我们所看到的图片,只需师长教师成一条series曲线(即在画图区中先绘出估计的发卖额图表),然后再增加一条series曲线(即在画图区中绘出实践的发卖额图表)就好了
先界说及设置参数
dimstrChartAbsPath
dimstrChartRelPath
strChartAbsPath=Server.MapPath("temp")
strChartRelPath="temp"
以下是天生、删除图片的函数
FunctionExportChartToGIF(objCSpace,strAbsFilePath,strRelFilePath)
DimstrFileName
Randomize
strFileName=Timer&Rnd&".gif"
objCSpace.ExportPicturestrAbsFilePath&"/"&strFileName,"gif",300(图片高度),500(图片宽度,以上两值都可由程序静态设置))
ExportChartToGIF=strRelFilePath&"/"&strFileName
EndFunction
FunctionCleanUpGIF(GIFpath)
DimobjFS
DimobjFolder
Dimgif
setobjFS=Server.CreateObject("Scripting.FileSystemObject")
setobjFolder=objFS.GetFolder(GIFpath)
foreachgifinobjFolder.Files
ifinstr(gif.Name,".gif")>0
andDateDiff("d",gif.DateLastModified,now)>5(假如图片天生的工夫已凌驾5天,则删除它)then
objFS.DeleteFileGIFpath&""&gif.Name,True
endif
i=i+1
next
setobjFolder=nothing
setobjFS=nothing
EndFunction
以下是挪用代码
strChartFile=ExportChartToGIF(chart,strChartAbsPath,strChartRelPath)
Response.Write"<palign=center><IMGSRC="""&strChartFile&""">"&"</P>"
⋯⋯
CleanUpGIF(strChartAbsPath)
⋯⋯
固然用OWC天生的图表功效完全,界面美妙,但它也存在着很多缺点。
起首,OWC只撑持RecordSet数据集,不撑持DataSet数据集,因而在检索时不克不及利用sqlCommand、sqlDataAdapter等工具,只能利用RecordSet工具举行检索。
其次,因为不撑持DataSet数据集,如许我们就没法在天生图表的同时利用DataGrid显现数据表,而只能用轮回顺次掏出Recordset纪录会合的全体数据后,手工天生表格。
最初,在统一张图表中绘制的曲线只能是统一品种型,或同为光滑曲线图,或同为柱状图,它不克不及在统一张图表中显现分歧范例的曲线。
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来; |
|