现在的位置: 首页 > 综合 > 正文

利用Javascript 结合 VML 生成三维报表(饼图)[原创]

2012年05月21日 ⁄ 综合 ⁄ 共 4001字 ⁄ 字号 评论关闭

  前几天看了Jmtek 的 http://www.cnblogs.com/jmtek/archive/2006/02/23/336073.html 这篇文章,写得的确不错,控件也非常好。只是只能供我们使用 DotNet 的朋友们使用。最近在网上比较流行 AJAX 技术,于是萌生了在 AJAX 下实现这种效果的想法。最终决定采用一个文本文件作为数据源,Javascript 动态生成 VML 代码。实现后的效果还比较可以,生成的图表效果和 Jmtek 的控件效果差不多,并且能够在文本数据内容发生改变时无刷新的更新图表,更新数据也非常方便。

  这段代码的最大特点是:移植性非常好,只需将两个文件放在任意一个目录下即可运行,这样爱好 JAVA 的朋友也可实现这种效果了。

  使用说明:将代码分别保存为相应的文件,放在同一个目录下,浏览网页即可看到生成的三维图表。

  欢迎大家与我交流,我的QQ号是:512754784
       
  代码文件下载:/Files/Infinity/成绩三维报表.rar

  示例图片如下:
------------------------------------------------------------------------------------------------------------
成绩三维报表.htm
------------------------------------------------------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
<!--
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                               ┃
┃ 摘 要: 统计图--饼图                     ┃
┃ 作 者: 无涯                          ┃
┃ 创建日期:2006年02月28日                  ┃
┃ 完成日期:2006年02月28日                  ┃
┃                               ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 
-->
<HTML xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
 
<HEAD>
  
<title></title>
  
<Meta http-equiv="Refresh" Content="3">
  
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
  
<meta name="vs_defaultClientScript" content="JavaScript">
  
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  
<STYLE> v\:* { Behavior: url(#default#VML) }
 o\:* 
{ behavior: url(#default#VML) }
  
</STYLE>
  
<SCRIPT LANGUAGE="JavaScript">
  
<!--
   
var onit=true;
   
var num=0;
   
var stat_array = new Array();
   
   
function moveup(iteam,top,txt,rec)
   
{
    temp 
= eval(iteam);
    tempat 
= eval(top);
    temptxt 
= eval(txt);
    temprec 
= eval(rec);
    at 
= parseInt(temp.style.top);
    temprec.style.display 
= ""
    
if (num > 27)
    
{
     temptxt.style.display 
= "";
    }

    
if(at>(tempat-28&& onit)
    
{
     num
++;
     temp.style.top 
= at-1;
     Stop
=setTimeout("moveup(temp,tempat,temptxt,temprec)",10);
    }

    
else
    
{
     
return;
    }
 
   }

   
   
function movedown(iteam,top,txt,rec)
   
{
    temp 
= eval(iteam);
    temptxt 
= eval(txt);
    temprec 
= eval(rec);
    clearTimeout(Stop);
    temp.style.top 
= top;
    num 
= 0;
    temptxt.style.display 
= "none";
    temprec.style.display 
= "none";
   }

   
   
function ontxt(iteam,top,txt,rec)
   
{
    temp 
= eval(iteam);
    temptxt 
= eval(txt);
    temprec 
= eval(rec);
    
if (onit)
    
{
     temp.style.top 
= top-28;
     temptxt.style.display 
= "";
     temprec.style.display 
= "";
    }

   }

   
   
function movereset(over)
   
{
    
if (over==1)
    
{
     onit
=false;
    }

    
else
    
{
     onit
=true;
    }

   }

  
   
function createXMLHttp()
   
{
    
var xmlObj;
    
if(window.XMLHttpRequest)
    
{
     xmlObj 
= new XMLHttpRequest();
     
if(xmlObj.overrideMimeType)
      xmlObj.overrideMimeType('text
/xml');
    }
 
    
else if(window.ActiveXObject)
    

     
try
     
{
      xmlObj 
= new ActiveXObject("Microsoft.XMLHTTP");
      
return xmlObj;
     }

     
catch(e)
     
{
      
try
      
{
       xmlObj 
= new ActiveXObject("Msxml2.XMLHTTP");
       
return xmlObj;
      }

      
catch(e)                
      
{
       
try
       
{
        xmlObj
=new ActiveXObject("MSXML2.ServerXMLHTTP");
        
return xmlObj;
       }

       
catch (e)
       

        
return false;
       }

      }

     }

    }
 
    
else 
    
{
     
return false;
    }

   }

   
   
function readFile(url)
   
{
    
if (createXMLHttp())
    
{
     xmlUrl 
= createXMLHttp();
    }

    xmlUrl.Open(
"GET",url); 
    xmlUrl.Send();
    
while (xmlUrl.readyState == 4)
    
{
     
return bytes2BSTR(xmlUrl.ResponseBody);
    }

   }


   
function table(num,table_left,table_top,all_width,all_height,table_title,unit)
   
{
    
var allvalues=0;
    
var color = new Array();
    
var bg_color = new Array(num);
    
var pie = new Array(num);

    color[
0]="#ff8c19";
    color[
1]="#ff1919";
    color[
2]="#ffff19";
    color[
3]="#1919ff";
    color[
4]="#19ff19";
    color[
5]="#fc0000";
    color[
6]="#3cc000";
    color[
7]="#ff19ff";
    color[
8]="#993300";
    color[
9]="#f60000";
 
    
for (i

抱歉!评论已关闭.