1.前言
很多时候会用到在线编辑保存Word,Excel,这时我们需要用到WebOffice。源代码到www.dsoframer.com,注册后即可下载,完全免费使用。已包含在附件中。
1.1 加载控件
因为用到了Active控件,所以只能在IE下使用,在火狐下会报错。使用时,需要将LoadWebOffice.js,weboffice_v6.0.5.0.cab放在指定的目录下,然后在页面中加载控件,如下:
加载控件,利用<SCRIPT src="LoadWebOffice.js"></SCRIPT>,加载的具体内容如下:
var s = "" s += "<object id=WebOffice1 height=768 width='100%' style='LEFT: 0px; TOP: 0px' classid='clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5' codebase='weboffice_v6.0.5.0.cab#Version=6,0,5,0'>" s +="<param name='_ExtentX' value='6350'><param name='_ExtentY' value='6350'>" s +="</OBJECT>" document.write(s)
以上内容目的就是利用LoadWebOffice.js加载weboffice_v6.0.5.0.cab(Active控件)。
1.2 规范说明代码
WebOffice的早期版本,如果使用了<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 这个规范说明代码,否则的话死活也不会显示 控件区域,不过最新版本没有这个问题,经测试利用
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
都不会出现控件无法加载的问题。
2.使用
2.1 新建文档
//新建Word document.all.FramerControl1.CreateNew("Word.Document"); //新建Excel document.all.FramerControl1.CreateNew("Excel.Sheet");
2.2 打开文档
//打开制定的本地文件 document.all.FramerControl1.Open("C:\\TestBook.xls"); //制定用Word来打开c:\plain.txt文件 document.all.FramerControl1.Open("C:\\Plain.txt",false, "Word.Document"); //打开服务器的文件 document.all.FramerControl1.Open "https://secureserver/test/mytest.asp?id=123",true, "Excel.Sheet", "MyUserAccount", "MyPassword"); //打开服务器的文件 document.all.FramerControl1.Open("http://localhost/1.doc", true);
2.3 保存文档
//保存到本地 document.all.FramerControl1.Save("c:\\1.doc",true); //保存到服务器 //初始化Http引擎 document.all.FramerControl1.HttpInit(); //增加Post变量 document.all.FramerControl1.HttpAddPostString("RecordID","20060102200"); document.all.FramerControl1.HttpAddPostString("UserID","李局长"); //上传打开的文件 document.all.FramerControl1.HttpAddPostCurrFile("FileData", "文档名.doc"); //执行上传动作 document.all.FramerControl1.HttpPost("http://xxxx.com/uploadfile.asp");
2.4 综合操作
更多具体的操作,大家可以去附件weboffice_v6.0.5.zip 中,找到main.js,然后里面有详细的操作方法。
//进入留痕状态 document.all.FramerControl1.SetTrackRevisions(1); //进入非留痕状态 document.all.FramerControl1.SetTrackRevisions(0); //接受当前修订 document.all.FramerControl1.SetTrackRevisions(4); //设置当前用户 document.all.FramerControl1.SetCurrUserName("张三"); //设置当前时间 document.all.FramerControl1.SetCurrTime("2006:02:07 11:11:11"); //在当前WORD位置插入标签,标签名为"book1",数值为"test" document.all.FramerControl1.SetFieldValue("book1","test","::ADDMARK::"); //设置书签"Time",数值为"2006-03-16 22:22:22" document.all.FramerControl1.SetFieldValue("Time","2006-03-16 22:22:22",""); //在书签位置"hongtou",插入红头文件"http://222.222.222.222/hongtou1.doc" 这样,红头就自动插进去了 document.all.FramerControl1.SetFieldValue("hongtou","http://222.222.222.222/hongtou1.doc","::FILE::"); //只有“新建”菜单可用 document.all.FramerControl1.SetMenuDisplay(1); //只有“打开”菜单可用 document.all.FramerControl1.SetMenuDisplay(2); //只有“打开”和“新建”菜单可用 document.all.FramerControl1.SetMenuDisplay(3); //完全保护文档,密码为"pwd" document.all.FramerControl1.ProtectDoc(1,1,"pwd"); //解除文档保护 document.all.FramerControl1.ProtectDoc(0,1,"pwd"); //显示修订留痕 document.all.FramerControl1.ShowRevisions(1); //隐藏修订留痕 document.all.FramerControl1.ShowRevisions(0); //文件头部插入文件 document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",1); //文件尾部插入文件 document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",2); //当前光标位置插入文件 document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",0); //文件头部插入图片 document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",9); //文件尾部插入图片 document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",10); //当前光标位置插入图片 document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",8); //大纲模式 document.all.FramerControl1.ShowView(5); //设置文件只读密码 document.all.FramerControl1.SetValue("password","::DOCPROP:PassWord"); //设置文件修改密码 document.all.FramerControl1.SetValue("password","::DOCPROP:WritePW");
3.例子。
附件是一个具体的例子。解压缩后直接用ie打开index.html即可。
文章地址:http://javapub.iteye.com/blog/729634
1 楼
kkjava
2011-11-05
可否把你做的代码发给我 谢谢 源码我没弄明白 邮箱 672895886@qq.com 谢谢