请问,怎样在网页上图形化显示数据集?

naliver 2004-12-21 09:24:30
在B/S,我用ASP页面得到了一个含数据的记录集,我想在客户端用图形或Flash的方法显示出来,大家有什么好方法吗?
如果采用第三方的图形控件,我了解一个叫Fusion Charts的Flash控件,效果挺好的,可惜的是,不支持简体中文.象还有什么Java之类的没呀?或是还有什么其他好的第三方控件?
现在我只是在服务器端根据记录集用Dll创建Excel对象,生成了一个Excel文件再产生一个超链接以便提供给客户端下载,只是这个方法不仅可能会因为MS的IE和Active X做的并不是很兼容的原因会有点不稳定,而且,由于Dll的创建用到了Excel和Ado的引用,它的适用范围也受到了影响,在不同操作系统上,象Office版本不一样,或者使用了.Net的Ado等就都会不适用,此时需要重新生成该版本的Dll,不知道有谁知道能够让Dll变得通用的方法不?
至于其他的在网页上图形化显示数据集的方法,不知道还有没有?
谢谢大家!
...全文
356 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
net205 2004-12-23
  • 打赏
  • 举报
回复
Mark,,,学习
ruyunluck 2004-12-23
  • 打赏
  • 举报
回复
学习
naliver 2004-12-23
  • 打赏
  • 举报
回复
哪位同仁能够提供一些VML的资料呀?
zzy0000 2004-12-22
  • 打赏
  • 举报
回复
mark 学习
naliver 2004-12-22
  • 打赏
  • 举报
回复
Chart.html:

<HTML>
<HEAD>
<TITLE>统计结果</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF">
<CENTER>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/
pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
WIDTH="800" HEIGHT="600" id="FC2Column" ALIGN="">
<PARAM NAME=movie VALUE="FC2Column.swf?dataUrl=Data.xml">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="FC2Column.swf?dataUrl=Data.xml" quality=high bgcolor=#FFFFFF WIDTH="565" HEIGHT="420" NAME="FC2Column"
ALIGN=""
TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>
</CENTER>

</BODY>
</HTML>
naliver 2004-12-22
  • 打赏
  • 举报
回复
下面是一个自己编写的使用FusionCharts的示例程序,里面有关数据集的内容省略掉了,请配合您的数据集修改;暂时未定义color,还没想好颜色怎样配合会比较好看,暂时使用的是swf文件的默认色。
现在还没怎么使用Blog,以后有机会再把程序源码贴上去,现在要使用这种方法生成统计图的各位同仁,就烦你们自己去网上找swf了。

Statistic.asp:

Chart.html----调用Data.xml和FC2Column.swf显示最后结果的网页(这儿是把Chart.html和Data.xml放在同一目录下的)
Data.xml----swf文件的数据源
FC2Column.swf----FusionCharts提供的一个swf文件,用于显示统计图,其他的FusionCharts的swf文件也可以,只是要把调用FC2Column.swf的地方,即代码"FC2Column.swf"改成您选择的swf文件

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<%
'rs_Stat represents a DataBase Recordset,I have deleted the code operating the DataBase
if not rs_Stat.eof then
'---------------------------------------------------------------------------
'利用记录集形成Data.xml文件,供FusionCharts的Flash统计图演示控件调用
'Data.xml's format is like the following:
'<?xml version="1.0" encoding="Shift-JIS"?>
'<graph caption='Decline in Net Interest Margins of Asian Banks (1995-2001)' subCaption='(in Percentage %)' yaxisname='Points' xaxisname='Country' numdivlines='3' zeroPlaneColor='333333' zeroPlaneAlpha='40' numberSuffix='%'>
'<set name='Taiwan' value='-0.33' color='F23456'/>
'<set name='Malaysia' value='-0.27' color='FF6600'/>
'<set name='Hong Kong' value='0.40' color='009966' />
'<set name='Philippines' value='0.6' color='CC3399'/>
'<set name='Singapore' value='-0.8' color='FFCC33' />
'<set name='Thailand' value='-2.2' color='F23456'/>
'<set name='India' value='1.2' color='FF6600'/>
'</graph>
'---------------------------------------------------------------------------
'I have used the FSO to write the contents from the DataBase Recordset in a fixed format of Data.xml
Dim fso,TempFilePath,TempFile,StrContent,y_name
TempFilePath = server.MapPath("Data.xml")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set TempFile = fso.CreateTextFile(TempFilePath,True)

'Data.xml的文件头
StrContent = "<?xml version=""1.0"" encoding=""Shift-JIS""?>" '注意双引号的生成方法
TempFile.WriteLine StrContent

StrContent = "<graph caption='" & File_Source_Value & "' subCaption='' xaxisname='" & rs_Stat.fields(0).name & "' yaxisname='" & y_name & "' animspeed='9' numdivlines='3' zeroPlaneColor='333333' zeroPlaneAlpha='40' numberSuffix=''>"
TempFile.WriteLine StrContent

'Data.xml的数据区
for i = 0 to rs_Stat.recordcount - 1
StrContent = "<set name='" & rs_Stat.fields(0).value & "' value='" & rs_Stat.fields(1).value & "' color=''/>"
TempFile.WriteLine StrContent
rs_Stat.movenext
next

'Data.xml的文件尾
StrContent = "</graph>"
TempFile.WriteLine StrContent

TempFile.Close '注意要关闭文件

Set TempFile = Nothing '释放对象
Set fso = Nothing

response.Redirect("Chart.html")

else
response.Write("I am sorry,there is no record in the DataBase")
end if

'关闭记录集
if rs_Stat.State=1 then
rs_Stat.Close
set rs_Stat=nothing
end if

'释放连接对象
conn.Close
Set conn=Nothing
%>
<body>
</body>
</html>
naliver 2004-12-21
  • 打赏
  • 举报
回复
To whb147(苦乐随缘):
你真厉害,一看就知道我想做统计图
To iuhxq(小灰):
我会去查一下asppic组件的信息的,这两天一直在Google和Csdn上找,都找不着
To alianasia(孤鹰):
我先好好看看,谢谢你贴这么多
To chaney(chaney):
项目年前要交了,所以自己开发Flash可能不太容易,以前也没这方面Flash和数据库交互的经验,我说的那个FusionCharts就是Flash的统计图演示,有Evaluation版的,好像也有破解版的,不过就是不支持简体中文
To gu1dai([异域苍穹]追夢人):
没什么用Web画图的经验,也没有相关资料,所以可能需要参考一下你给的例子了
也谢谢up的同仁们
gu1dai 2004-12-21
  • 打赏
  • 举报
回复
而且不需要js
直接从数据库里取出平均数或者最小数作参照值为1
然后输出其他数时以其他数除以这个最小数或者平均数得到的就作为表格的高或者宽。
ok了。我来做一个例子吧。
gu1dai 2004-12-21
  • 打赏
  • 举报
回复
其实简单的数据图方块图
可以用表格实现阿
chaney 2004-12-21
  • 打赏
  • 举报
回复
用flash的话,开发比较麻烦。但也可以一试。flash可以获得asp传递的值,然后利用属性更改图形的长、宽等参数。
naliver 2004-12-21
  • 打赏
  • 举报
回复
To yjbnew(yjbnew):
你还真行,我给你的是柱状图的代码,其他的来不及贴,你竟然搞出个饼图来?不错不错*_*
不过你的数据数组和颜色的定义做的灵活吗?还有你的VML保存为Excel是怎么做的呢?
请教.
gu1dai 2004-12-21
  • 打赏
  • 举报
回复
up
alianasia 2004-12-21
  • 打赏
  • 举报
回复
可以使用Mschart....

或试一下下面的代码,改一改.

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="/StyleLib/Default_Style_Sheet.css">
<style type='text/css'>
.HeadTd {
background: #00A4E1;
border: 1px outset;
border-color: #00BBFF #0077FF #0077FF #00BBFF;
cursor: hand;
font-size: 9pt
}
.HeadTd_ {
background: #20C1FF;
border: 1px outset;
border-color: #60D3FF #0077FF #0077FF #60D3FF;
cursor: hand;
font-size: 9pt
}
.BodyTd {
background: #99CCFF;
border: 1px outset;
border-color: #B0D8FF #0077FF #0077FF #B0D8FF;
font-size: 9pt
}
</style>
<script>
function F_Time()
{
var now=new Date();
window.status=now.getYear()+"年"+eval("now.getMonth()+1")+"月"+now.getDate()+"日 "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+"实时分析";
setTimeout("F_Time()",1000);
}
function F_Init()
{
F_Time();

var iColumn=2;
var iRow=10;
document.forms[0].MS_Chart.ColumnCount=iColumn;
document.forms[0].MS_Chart.RowCount=iRow;
var F_Array=new Array();
for(i=0;i<iColumn;i++)
{
for(j=0;j<iRow;j++)
{
document.forms[0].MS_Chart.Column=i;
document.forms[0].MS_Chart.Row=j;
document.forms[0].MS_Chart.Data=eval("i*j");
document.forms[0].MS_Chart.RowLabel="200"+iRow+"年";
F_Array[i][j]=eval("i*j");
//F_Array[i][1]="200"+iRow+"年";
}
}
document.forms[0].MS_Chart.ChartData=F_Array;
}
function F_Table()
{
var hwnd=window.open();
}
</script>
</head>
<body>
<br>
<body onload="F_Init()">
<form>
<table width='100%' border='0' height='100%' cellpadding='2' cellspacing='0'>
<tr>
<td id='ItemHead' height='20' class='HeadTd_' align='center' colspan=4>图形分析</td>
</tr>
<tr>
<td id='ItemHead' height='100%' class='HeadTd_' align='center' colspan=4>
<object classid="clsid:3A2B370C-BA0A-11D1-B137-0000F8753F5D" id="MS_Chart" width="100%" height="100%"></object>
</td>
</tr>
<tr>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="样式切换" style="width:100%;background:#20c1ffff;color:white" onclick="javascript:document.forms[0].MS_Chart.ChartType=11*Math.random();">
</td>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="标题切换" style="width:100%;background:#20c1ffff;color:white" onclick="javascript:if(document.forms[0].MS_Chart.Title.Text==''){document.forms[0].MS_Chart.Title.Text='降水量统计对比图形分析';}else{document.forms[0].MS_Chart.Title.Text='';}">
</td>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="图例切换" style="width:100%;background:#20c1ffff;color:white" onclick="javascript:if(document.forms[0].MS_Chart.ShowLegend){document.forms[0].MS_Chart.ShowLegend=false;}else{document.forms[0].MS_Chart.ShowLegend=true;}">
</td>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="功能按钮" style="width:100%;background:#20c1ffff;color:white" onclick="F_Init()">
</td>
</tr>
<tr>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="表格数据" style="width:100%;background:#20c1ffff;color:white" onclick="F_Table()">
</td>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="保留功能" style="width:100%;background:#20c1ffff;color:white" onclick="">
</td>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="保留功能" style="width:100%;background:#20c1ffff;color:white" onclick="">
</td>
<td id='ItemHead' height='20' class='HeadTd_' align='center'>
<input type=button value="保留功能" style="width:100%;background:#20c1ffff;color:white" onclick="">
</td>
</tr>
</table>
</form>
<%
for i = 0 to 1
for j = 0 to 9
Response.Write "F_ayyay("&i&","&j&")="& i*j &"<br>"
next
next
%>
</body>
</html>
lnboy1003 2004-12-21
  • 打赏
  • 举报
回复
up
iuhxq 2004-12-21
  • 打赏
  • 举报
回复
有个asppic组件可以实现,你去vckbase搜索一下,还有源代码的,你可以自己在这个基础上开发
liuyangxuan 2004-12-21
  • 打赏
  • 举报
回复
:(
whb147 2004-12-21
  • 打赏
  • 举报
回复
你是说显示统计图??
你做报表???
还是别的???
yjbnew 2004-12-21
  • 打赏
  • 举报
回复
效果看这里:
www.jn-soft.net/vml.htm
yjbnew 2004-12-21
  • 打赏
  • 举报
回复
我也刚用你贴的那段代码做了个饼图。感觉还好。
不过,那段代码中有个BUG ,就是i应该从0开始。
我对VML也不熟悉,但今天看了一下,觉得不是很难的;估计一个礼拜就可以搞定。
naliver 2004-12-21
  • 打赏
  • 举报
回复
To gu1dai([异域苍穹]追夢人):
看明白了,谢谢你
不过我想再多了解一些有关VML的情况,不知道你有什么建议?MSchart的也可以
加载更多回复(15)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧