admin 管理员组

文章数量: 1086019


2024年4月18日发(作者:表单元素被单击的事件处理属性是)

…… 

NETWORK&C0啊啊UNIC盯ION……………………………………………………… ………………………… 

i ≤¨ ¨ 

利用OWC ̄Aj 打造冉t的 网 络版 Exc 

许得柱 

摘 要:利用OWC+Ajax技术打造用户自己的网络版Excel服务器.为用户以后使用网络版的Ex— 

cel软件打下了坚实的基础,提供了良好的解决问题的思路。 

关键词:OWC:Ajax;网络版Excel 

1 引言 

微软的Ofifce是目前最为流行的办公软件,Excel是微软 

办公套装软件的一个重要的组成部分,它可以进行各种数据 

的处理、统计分析和辅助决策操作.广泛地应用于管理、统 

计财经、金融等众多领域。遗憾的是,Excel作为单机版的软 

件,已经不能适应13益发展的广泛的网络应用.文中利用微 

软的OWC控件和Ajax技术.设计了一个简单易用的网络版 

Excel服务器,可以使Excel变成网络版,支持多用户远程操 

作,极大方便了广大的Excel用户,提高了工作效率。 

2 原理 

2.1 OWC 

Office Web Components是微软提供的一组COM控件.设 

计的目的是为众多的控件容器提供交互的电子表格建模、数据 

报表和数据可视化功能。OWC库包含四个主要的组件:电子 

表格组件、图表组件、透视表组件和数据源组件。 

“Office Web Components”名称中的单词“Ofifce”表示这 

些控件就是由那些开发微软Excel和Access的程序员中的一 

部分人开发的,并且这些控件被设计成在外观,使用感受和 

行为表现上就像是他们的微软Ofifce兄弟的精简版一样。使 

用OWC中的电子表格组件,做为网络版Excel的界面,这样 

用户看起来就像真正的Excel软件一样.更重要的是它还能 

直接支持与客户端中Excel软件进行相互的复制、粘贴操作。 

2.2 Ajax技术 

Ajax即“Asynchronous JavaScfipt and XML” (异步 

JavaScript和XML1,是指一种创建交互式网页应用的网页开发技 

术。关于njax技术原理,请参阅本刊2009年9月上半月刊中陈 

锦平的文章《基于njax技术Web实时监控系统》,下文不再重复。 

3 配置 

3.1 服务器端 

文中的设计环境是Windows Server2003的IIS6.0中.OWC 

控件用户可自行下载,下载地址为: 

http://download.microsoft.com/download/c/f/f/cff746cd—fl7e一40d8一 

acf2—50d2200ad28b/owcl1.exe(文中使用0WCl1版本) 

3-2客户端 

用户下载安装OWC11,下载地址同上。f客户端必须安装 

0WC11支持1 

4 代码 

4.1 首页文件Index.ASP 

打开如Dreamweaver 8等网页设计软件。插入两个文本域 

标签,分别命名为danwei和excelID,再插入两个按钮标签, 

值分别设置为“打开”和“保存”. 

<input type=”button”value=”打开”OnClick=”findzc 0”> 

<input type=”button”value=”保存”onClick=”addsave 0”> 

在网页中插入0wC对象,代码如下: 

<object classid:“clsId:O002E559—0000-0000"CO00— 

0000O0OOOO46” 

id=。'Spread1 style= width:l O0% height:95%:”></object> 

网页文件的设计界面效果如图1所示。 

图1 网页设计界面 

最后在网页底部利用Java脚本写下两个按钮的实现过程: 

<script language=“javascript。。> 

var strResult= ‘: 

function findzc(、| 开 

( 

Spread1.worksheets(“Sheet1“).Select(); 

Spread1 ActiveSheet.Cells.Clear(); 

var oBao=new ActiveXObject(”Microsoft.XMLHTTP”): 

var userlnfol=”dwbm=“+document.aII.danwei.value+”1.1+ 

document.a excelid.value; 

|l 脑臻程2技O砖10与.肇13护61 

实用第 智慧密集 

oBao.open('‘POST"."open.casp",false); 

oBaio.setRequestHeader(”Content—Type” "applicmtion/x— 

v ̄vw-fof"m-urlencoded”): 

oBao.send(us(erlnfo1): 

strResuIt:=unescape(OBaO.responseText); 

var arrResult=strResult.split(”#”): 

va r1.i  ̄=arnResult.1ength; 

for(i=00<iii:i++){ 

vat alrrTmP=arrResultli].split(“ 

for(x=0;x<=arrTmpHength;x++)4 

Spread1.woprksheets(' Sheet1”).cells(i+1 x+1).valule==arrTmp 

【×】: 

) 

) 

Spread1 ̄worlks ̄heets《"Sheet1 ).range(''al:Z2 )_En,tire(CoIumn: 

AutoFit0; 

) 

function AqddDataP0st(sName){ 

var oBao=new ActiveXObject(“Microsoft.XMLH-FFP ): 

sName escape .q(sName); 

var 

us{erlnfro=“d1wbm=“+document.alI.danwei.value+ Ill+doc LF. 

ment.a e :celld value+"&strx= +sName.1 

oBao..open("POST","save.asp",f1alse); 

oBao.s酿RequestlHeader (”Content一丁ype“,”aPPIication/x— 

www-form ̄udencoded“): 

oBaolsend(uselrlnfo); 

alertOJnescape(oBao.respon ̄seText)); 

) 

functio nr addsmve0//t呆存 

{ . 

var str ̄null= 

vat ssConstants=Spread1:Constants; 

v8F r=Spread1.worksheets(“Sheet1");Range(”A10001tO”).Endl(ss- 

Constants.xIU ).row;var c=SF ̄read1 iworks ̄ ̄heets("Sheet1 ). 

Rang,el'AA1  ').End(s sCconstant&s.xIToleft).column: 

var sResuIt!=new ArrayO; 

vat sResult1=inew Arary(); 

Var arrResult=strResult.sp“t(”# ): 

VaF iii。arrResuItHen!gth; 

for(var Ii=O;j<r;j++){ 

1 ̄var!i=0;i<c: +)( 

sResult1Ii】=Spread1.worksheets( Sheet1 ).cells《j+1,i+1),val_ 

Ue: 

) 

vat-sstr=sRe ̄sult1:joinrl”): 

if(j《1IIj>lil){ 

sRes ̄lt[sResultje ̄ngth]=sstl : 

) 

else if(arrResult[j】l=sstr){ 

sResu,It[sResult.1ength]=sstr: 

) 

与 

} 

str=:sResuIt.join[。#“): 

AddDataPost(str): 

) 

</script> 

4.2打开Excel文件功能的网页 

实现文件open.asp代码如下: 

<%@Langu,iage="javascript'。%> 

<% 

function OpenDB(sdbname){//g ̄j用AIDO操作Excel文件 

var connSl[r= Driver={MiIcrosoft ExceI Driiver( .xls)}:lDBQ 

+Server.MapPaith(sdbname); 

var connn =Server.CreateObject( ADOD ̄B.Connec1iionI): 

connin.Open((connstr), 

return connn;) 

var dwlbm=unescalpe(Request.Form( dwbm )): 

var arrResultl=dwbm。s t ) 

var dw=arrResultl[O】= 

var bm=arrResult1【 

var sRe ̄sult=new Arra ; 

var sResulr =he'w An|ay0; 

var dwbm ̄path=dw+。l厂十bm; 

var oConn=O【,13enDB(dwbrrlpath); 

var sq]。= 'sele)ct from Is ̄heet1¥ 

var rs=oConn.Ex(ecute(sq1); 

for(.-O <rs.Fields.count;i++){ 

sResuIt1【忙r slFjeldsl name.) 

sResu/t[sRe ̄sultlength]l=sResuIt1.joln《 

while《!rs.EO F){ 

{or(i:O;i<rs.Fields.count;i++){ 

sResuIt1Ⅲ=rs.Fiehds(i),Value;. } 

sResult[sResult.1ength]=sl sLulr1.join( n: 

rs_M,oveNext ) 

rs.cl:lose; 

rS:n ulJ 

Response.WI.ite(escape(sResult.join{ 释 )))≯ %》 

4.3保存Excel文件功能的网页 

实现文件savemD代码如下: 

<%@Language= JavaSc pt“%> 

<% 

function OpenDB(sdbname) 

{ 

vaf connstr=”Dr ver={Mlcrosoft Exce D rlve 

xl¥)}:DBQ 

+Sef_、,e MapP裔th(sdbnarne)+ ;readonIy faIse’‘ 

,, 

Va con =Sefver CreateObjeet(”ADODB.Conn 

eet.on 

e0nn.Open(eonnstr); 

retUrn COnn: 

 strr null= 

Request.f:orm《”dwbm。) 

t =dwbm.spI谴( ): 

(下转第65页) 

var

va dwbm=unescape(

Va arrResul

…… 

GRAPHICS AND删IAGE PROCESSING………… ……………… ………………………… ……………… 

3实现效果 

参考了一些国外网站的代码并做了适当的修改,效果如图2 

所示,读者可以在理解知识的同时调试运行源代码以加深理解。 

该实例实现了在三维虚拟世界的漫游,操作方式和CS游戏一致。 

4 结语 

流畅自然的三维漫游是三维游戏不可缺少的一部分.对它 

的原理做了较为详细的阐述.对具体的实现代码做了细致分 

析,希望对读者有所帮助。 

图2实例效果 

(收稿日期:2010—04—19) 

(上接第62页) 

var dw=arrResultl【O】: 

var bm=arrResultl【1】: 

var dwbmpath=dw+“/”+bm: 

f(strr==nul1){ 

strr=”没有更新或添加记录II”: 

) 

ResponselWrite(escape(strr)): 

%> 

vat oConn=OpenDB(dwbmpath); 

var str=unescape(Request.Form(”strx“)); 

var sResult=new Array(); 

var sResult2=new Array(); 

把以上3个文件复制到服务器端架设网站的根目录,并在 

网站的根目录下建立文件夹Excel。把测试用的Excel文件 

var arrResult=str.split(”栉”): 

chengji.xls复制到这个文件夹下,测试用Excel文件可自行制作。 

在客户端运行本程序,界面效果如图2所示,即可实现 

Excel文件的网络化。 

i ——一…一 

var zdmcResult=arrResult[O].split(” ∥获取字段名称 

var iii=arrResult.1ength; 

for(i=1:i< i++){ 

var arrTmp=arrResult[i]。split(”Il1): 

for(var x=O;x<arrTmp.1ength;x++) 

{ 

var sqlstr=“select from【sheet1¥】where“+zdmcResult[O】 

+”:“+arrTmp[O]; 

lf《I rs.E0F) 

var rs=oConn.Execute(sqIstr): 

( 

strr=zdmcResult[O]; 

sResult[x]=zdmcResult[x]+“= +arrTmp[x]+“ ”: 

图2客户端呈现界面 

var sqll=sResult.join(“,“): 

var sql= UPDATE【sheet1¥】SET“+sqll+”WHERE“+zdm— 

cResult[O]+”= +arrTmp[O]; 

strr=”记录已更新!!¨: 

) 

else 

5 结语 

利用OWC+Ajax打造成功了自己的Excel服务器。后台操 

作Excel文件主要使用了ADO技术.但程序还有许多需要完 

善的地方,比如如何对用户进行权限控制等,读者完全可以利 

用数据库做为后台,利用如ASP等技术实现这一功能,期待 

早日出现同类作品,方便广大用户的使用。 

( 

sResult[x]=zdmcResult[x]; 

sResult2[x]= ”+arrTmp【×l+II : 

var sqll=sResult.join(”, ): 

var sql2=sResuIt2.join(“,”): 

var sq!=”Insert into【sheet1¥】( +sql 1+”)Values('。+sql1l2+”)“ 

参考文献 

【1】张孝祥,张红梅.Javascript网页开发一体验式学习教程. 

清华大学出版社。2004. 

【2]曹衍龙,叶达峰.ajax编程技术与实例[M】.北京:人民 

邮电出版社.2007. 

strr=“记录已添加!!II: 

) 

} 

oConn.Execute(sq1); 

) 

(收稿日期:2010—04—14) 

||i 


本文标签: 网页 用户 组件