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
版权声明:本文标题:利用OWC+Ajax打造自己的网络版Excel 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713374091a631449.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论