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

动态|服务器|图表

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

以前在这里也曾经有一些文章谈到了在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

好了。终于写完了,其中关于临时文件的处理的方法也许不是很好,如果你有更好的方法的话,请告诉我。希望这篇文章对大家都所帮助:)

时间: 2024-10-03 20:40:58

利用OWC服务器端组件动态生成图表的相关文章

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

动态|服务器|图表 引:Web程序开发中,经常需要从数据库表文件中提取数据,并对大批量的数据进行分析比较,此时最常用也是最直观明了的表现方法莫过于绘制图表. ASP擅长服务器端的Web编程,操作后台数据库更是它的强项.但是用ASP制作实时数据库图表有点困难,因为ASP本身并不支持图表功能,只能借助第三方控件进行开发,如VB的MSChart 控件.而微软推出的实时数据库图表制作组件-- O W C(Microsoft Office Web Components),为在Web中绘制图形提供了灵活的同

求助:用VB.net可以将数据动态生成图表(折线图、柱型图等)后插入word中吗?如何做??请大家帮忙!谢谢!!!

问题描述 求助:用VB.net可以将数据动态生成图表(折线图.柱型图等)后插入word中吗?如何做??请大家帮忙!谢谢!!! 解决方案 解决方案二:DimoXLAsWord.ApplicationDimoWDAsWord.Document'创建一个工作文档oWD=oXL.Documents.Add(Missing.Value)oWD=oXL.ActiveDocumentoWD.ActiveWindow.Selection.InlineShapes.AddPicture(imagepath)'垃圾

利用ASP.NET技术动态生成HTML页面

思路 1.利用如Dw-Mx这样的工具生成html格式的模板,在需要添加格式的地方加入特殊标记(如$htmlformat$),动态生成文件时利用代码读取此模板,然后获得前台输入的内容,添加到此模板的标记位置中,生成新文件名后写入磁盘,写入后再向数据库中写入相关数据. 2.使用后台代码硬编码Html文件,可以使用HtmlTextWriter类来写html文件. 优点 1.可以建立非常复杂的页面,利用包含js文件的方法,在js文件内加入document.write()方法可以在所有页面内加入如页面头,

利用ASP.NET技术动态生成HTML页面_ASP.NET

思路 1. 利用如Dw-Mx这样的工具生成html格式的模板,在需要添加格式的地方加入特殊标记(如$htmlformat$),动态生成文件时利用代码读取此模板,然后获得前台输入的内容,添加到此模板的标记位置中,生成新文件名后写入磁盘,写入后再向数据库中写入相关数据. 2. 使用后台代码硬编码Html文件,可以使用HtmlTextWriter类来写html文件. 优点 1. 可以建立非常复杂的页面,利用包含js文件的方法,在js文件内加入document.write()方法可以在所有页面内加入如页

JQuery Highcharts 动态生成图表的方法_jquery

复制代码 代码如下: $(function () { $(document).ready(function() { Highcharts.setOptions({ global: { useUTC: false } }); var chart; $('#container').highcharts({ chart: { type: 'spline', animation: Highcharts.svg, // don't animate in old IE marginRight: 10, ev

ASP中利用OWC控件实现图表功能详解

控件|图表|详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法.OWC的更多功能,属性可参加MSOWCVBA.chm帮助文件(在office 2000的文件夹下大家自己找). testOWC.asp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <

利用Highcharts插件制作动态图表

原文:利用Highcharts插件制作动态图表 向大家推荐一款js插件,用于绘制图表Highcharts,具体操作可参考官方网站:http://www.hcharts.cn/ 1.如下为本人制作的图形效果如下,当然其效果远不止这些,大家还可以深入研究!     2.下面我来讲解下是如何制作的 首先需要下载并引入 highcharts.js 文件  <script src="../../Scripts/highcharts.js" type="text/javascrip

利用Java动态生成 PDF 文档

利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那么目前最佳的解决方案,你可能会想到 iText ,对没错... iText+(Velocity / Freemarker)可以实现.不过据我熟悉,iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式会让你头大的.不要失望,接下来

转载:用Visual C#动态生成组件,请看!(一)

用Visual C#动态生成组件 ·阿虎· 以前在用Delphi写程序的时候,总不喜欢在窗体上排放很多组件,这一方面有点不美观,并且在调试程序时候,也不是十分方便.通常在写程序的时候,当要用到某些组件,采用的方法一般都是动态创建,用完以后就释放掉.Visual C#在程序运行的时候也可以动态创建组件,下面就结合一个程序例子来具体介绍如何用Visual C#动态生成组件.首先让我们了解一下,在动态创建组件的过程中要用到的一些概论和理论. 一. Boxing (装箱)和Unboxing (出箱):