首页 >> 读书频道 >> 电脑 >> 利用OWC服务器端组件动态生成图表
 
· PHP 和 XML: 使
· PHP 和 XML: 使
· PHP 和 XML: 使
· 利用static实现表格
· MYSQL初学者使用指南
· SQL数据操作基础(中级
· SQL数据操作基础(中级
· SQL数据操作基础(中级
· SQL数据操作基础(中级
· SQL数据操作基础(初级
· SQL数据操作基础(初级
· SQL数据操作基础(初级
 
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
· 2006高考录取规则
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

利用OWC服务器端组件动态生成图表


查看有无更新版本

关键字:PHP 2006-9-8

 

以前在这里也曾经有一些文章谈到了在ASP中生成动态图表的问题,但那些文章中所谈到的一些方法都有某些方面的限制,如需要在客户端安装office2000或安装OWC,有些则可能在Intranet中使用时没什么问题,但在通过Internet访问的时候,就可能出现无法正常工作的现象(这主要和SQL Server的安全设置有关)。那么,我们如何来避免这些问题呢?有一个很好的方法,就是将在ASP中生成的图表转换成图片文件保存在服务器上,这样用户最终看到的是GIF图片格式的图表,我想现在的任何一种浏览器在观看GIF图片的时候都没什么问题吧。:)也许唯一可能的问题就是如何对这些生成的临时图片文件的处理问题,关于这个问题在最后我们会讨论。
下面我们会用一个具体的实例来说明这种方法。程序的测试环境为:
NT4.0(SP5)+IIS4.0+SQL Server7.0+IE5.0,要运行下面的ASP程序,请将下面的代码Copy,保存到你的一个虚拟目录中,在这个虚拟目录中建立一个子目录tmp(你可能修改代码中的路径以符合自己的路径),在IIS中设置read权限即可,注意了,在NT上你必须设置此tmp目录对IUSR_servername用户至少有Change的权限。建立一个pubs的DSN指向SQL Server的pubs数据库。
以下是代码:
chart.asp
<%
Function ExportChartToGIF(cspace)
    Dim fso           
    Dim sFilePath      
    Dim sFileName    
    '生成临时文件的文件名
    set fso = CreateObject("Scripting.FileSystemObject")
    sFilePath = Request.ServerVariables("PATH_TRANSLATED")
    sFilePath = left(sFilePath, InStrRev(sFilePath, "\"))
    sFilePath = sFilePath & "tmp\"
    sFileName = fso.GetTempName()
    sFileName = sFileName & ".gif"
    set fso=nothing
    '将chart转换成GIF文件保存在临时目录
    m_cspace.ExportPicture sFilePath & sFileName, "gif", 200, 150
   
    '将生成的临时图片报存在session中以便于删除
    Session("TC:" & sFilePath & sFileName) = sFilePath & sFileName
    ExportChartToGIF = sFileName
End Function
Sub BindChartToDSC(cspace, dsc, sRSName, sCategories, sValues)
    Dim cht  
    Dim ser   
       
    set c = cspace.Constants
       
    cspace.Clear
    ' 绑定数据源
    set cspace.DataSource = dsc
       
    cspace.DataMember = sRSName
       
    set cht = cspace.Charts.Add()
    cht.HasLegend = True
    cht.Type = c.chChartTypePie
       
    set ser = cht.SeriesCollection.Add()
    ser.SetData c.chDimCategories, 0, sCategories
    ser.SetData c.chDimValues, 0, sValues
       
    set dls = ser.DataLabelsCollection.Add()
    dls.HasPercentage = True
    dls.HasValue = False
End Sub
%>
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>利用OWC动态生成图表</title>
</head>
<body>
<%
set m_cspace = server.CreateObject("OWC.Chart")
set DSC = server.CreateObject("OWC.DataSourceControl")
DSC.ConnectionString = "DSN=pubs;uid=sa"
DSC.RecordsetDefs.AddNew "select distinct state,num=COUNT(*) FROM authors GROUP BY state",DSC.Constants.dscCommandText,"ChartData"
BindChartToDSC m_cspace, DSC, "ChartData", "state", "num"
m_sFilePath = ExportChartToGIF(m_cspace)
set m_cspace=nothing
set m_cht=nothing
%>
<br><br>
<img src="tmp/<%= m_sFilePath %>">
</BODY>
</HTML>
其中我们会发现两个有用的函数:ExportChartToGIF和BindChartToDSC
ExportChartToGIF(cspace)是一个用来将chart转换成GIF文件的函数
cspace:一个OWC.Chart的实例
BindChartToDSC(cspace, dsc, sRSName, sCategories, sValues)用来将一个Chart绑定到数据源
cspace:OWC.Chart的实例
dsc:数据源
sRSName:记录集名称
sCategories,sValues:Chart中每个系列的名称字段和相应的值的字段名(说的好象不是很清楚,不过看看代码你就明白了)
在使用服务器端的OWC时,实际上和使用其它的组件没什么区别,都是用server.createobject来创建一个实例,再调用组件的方法和属性。
OWC包括四个组件,他们的ProgID分别为:
OWC.Chart:图表组件
OWC.SpreadSheet:电子表格组件
OWC.DataSourceControl:数据源组件
OWC.PivotTable:动态报表组件
最后说一下如何处理临时的图片文件
在ExportChartToGIF汉书中你可以看到如下的代码:
Session("TC:" & sFilePath & sFileName) = sFilePath & sFileName
我们将产生的图片文件路径保存在session中,然后在Session_OnEnd中添加如下的代码:
Set fsoTemp = CreateObject("Scripting.FileSystemObject")
for each imagefile in Session.Contents
    if left(imagefile,3) = "TC:" then
        fsoTemp.DeleteFile mid(imagefile,4), True
    end if
next
set fsoTemp=nothing
好了。终于写完了,其中关于临时文件的处理的方法也许不是很好,如果你有更好的方法的话,请告诉我。希望这篇文章对大家都所帮助:)

利用OWC服务器端组件动态生成图表

[ 1 ]
利用OWC服务器端组件动态生成图表 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑