web在线编辑word,excel,pdf插件-----WebOffice 文档控件API
目 录
一、工作原理...5
1.1 开发流程...5
1.2 WEB页面调用控件:.6
二、接口说明...7
2.1 接口...7
2.1.1 AboutBox.7
2.1.2 AcceptAllRevisions.7
2.1.3 CloseDoc.7
2.1.4 DelLocalFile.8
2.1.5 GetDocumentObject.8
2.1.6 GetFieldValue.9
2.1.7 GetTempFilePath.9
2.1.8 GetRevCount.10
2.1.9 GetFileSize.10
2.1.10 GetBookMarkCount.10
2.1.11 HideMenuItem.10
2.1.12 HttpInit.11
2.1.13 HttpAddPostFile.11
2.1.14 HttpAddPostString.11
2.1.15 HttpAddPostCurrFile.12
2.1.16 HttpPost.12
2.1.17 InsertFile.12
2.1.18 IsOpened.13
2.1.19 IsSaved.13
2.1.20 LoadOriginalFile.14
2.1.21 OpenFileDlg.14
2.1.22 ProtectDoc.15
2.1.23 PrintDoc.15
2.1.24 PutSaved.15
2.1.25 Save.16
2.1.26 SaveTo.16
2.1.27 SaveAs.16
2.1.28 SetFieldValue.17
2.1.29 SetTrackRevisions.18
2.1.30 ShowRevisions.18
2.1.31 SetCurrUserName.18
2.1.32 ShowDialog.18
2.1.33 UnProtectDoc(BSTRstrPwd).19
2.2 属性...20
2.2.1 DocType.20
2.2.2 Version.20
2.2.3 AppVersion.20
2.2.4 lEventRet.20
2.2.5 IsModify.21
2.2.6 ShowToolBar.21
2.2.7 lContinue.21
2.3 事件...21
2.3.1 NotifyWordEvent.21
2.3.2 NotifyCtrlReady.22
2.3.3 NotifyToolBarClick.22
附录:WebOffice文件Http上传原理...23
一、工作原理
1.1 开发流程
<SCRIPTLANGUAGE=javascript FOR=WebOffice1 EVENT=NotifyCtrlReady>
functionWebOffice1_NotifyCtrlReady() {
document.all.WebOffice1.LoadOriginalFile("…","…");
├ 根据当前步骤,来决定是否进入修订状态,如果是修订状态,最好设置当前的用户名
functionWebOffice1_NotifyCtrlReady() {
document.all.WebOffice1.LoadOriginalFile("…","…");
document.all.WebOffice1.SetCurrUserName("张三");
document.all.WebOffice1.SetTrackRevisions(1);
document.all.WebOffice1.SetTrackRevisions(4);
document.all.WebOffice1.HttpInit();
document.all.WebOffice1.HttpAddPostString("…","…");
document.all.WebOffice1.HttpAddPostCurrFile("…","…");
document.all.WebOffice1.HttpPost("…")
├ saveDoc.asp获取表单数据和Office进行数据库操作,并返回操作是否正确。
1.2 WEB页面调用控件:
<OBJECT id=WebOffice1 height=520width="100%" style="LEFT: 0px; TOP: 0px"
classid="clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5" codebase=WebOffice.ocx#Version=3,0,0,0>
<PARAM NAME="_Version"VALUE="65536">
<PARAM NAME="_ExtentX"VALUE="2646">
<PARAM NAME="_ExtentY"VALUE="1323">
<PARAM NAME="_StockProps"VALUE="0"></OBJECT>
width 控件的宽度,可以使用绝对大小,如width="100px"。
注意: 如果控件的width 和height属性使用%表示,则要明确指明它所在的容器的大小,如把控件放到表格<td>内,则要明确指明表格<td>的width和height的绝对值。
二、接口说明
2.1 接口
2.1.1 AboutBox
document.all.WebOffice1.AboutBox();
2.1.2 AcceptAllRevisions
原 型: longAcceptAllRevisions();
document.all.WebOffice1.AcceptAllRevisions();
2.1.3 CloseDoc
原 型: long CloseDoc(longblReqSaved);
document.all.WebOffice1.CloseDoc (0);
2.1.4 DelLocalFile
原 型: long DelLocalFile(BSTRstrFilePathName);
document.all.WebOffice1.DelLocalFile("c:\\111.doc");
2.1.5 GetDocumentObject
原 型: IDispatch*GetDocumentObject();
获取文档对象的ActiveDocument对象,此接口非常重要,基本所有的VBA功能都可以通过这个接口来实现。
参 数:
返回值: ActiveDocument对象的Dispatch
示 例:
/* 以下的JavaScript为采用ActiveDocument的方式直接操作VBA,向DOC文档的书签中加入一个图片。
function AddPicture(strMarkName,strBmpPath,vType)
在书签位置插入图片,
strMarkName 书签的名称
strBmpPath 图片的路径
vType 插入后的图片的样式,5为浮动在文字上面
AddPicture("test1","d:\\111.bmp",5);
AddPicture("test1","d:\\111.bmp",128);
*/
function AddPicture(strMarkName,strBmpPath,vType)
{
//定义一个对象,用来存储ActiveDocument对象
var obj;
obj =new Object(document.all.WebOffice1.GetDocumentObject());
if(obj!=null){
var pBookMarks;
// VAB接口获取书签集合
pBookMarks = obj.Bookmarks;
var pBookM;
// VAB接口获取书签strMarkName
pBookM = pBookMarks(strMarkName);
var pRange;
// VAB接口获取书签strMarkName的Range对象
pRange = pBookM.Range;
var pRangeInlines;
// VAB接口获取书签strMarkName的Range对象的InlineShapes对象
pRangeInlines = pRange.InlineShapes;
var pRangeInline;
// VAB接口通过InlineShapes对象向文档中插入图片
pRangeInline = pRangeInlines.AddPicture(strBmpPath);
//设置图片的样式,5为浮动在文字上面
pRangeInline.ConvertToShape().WrapFormat.TYPE = vType;
delete obj;
}
}
2.1.6 GetFieldValue
原 型: BSTRGetFieldValue(BSTR strFieldName, BSTR strSheetName);
var strFieldValue=document.all.WebOffice1.GetFieldValue("mark_1","")
2.1.7 GetTempFilePath
var strTempPath=document.all.WebOffice1.GetTempFilePath();
2.1.8 GetRevCount
2.1.9 GetFileSize
原 型: longGetFileSize (LPCTSTR strFilePath);
var vLen = obj.GetFileSize("c:\\111.doc");
2.1.10 GetBookMarkCount
2.1.11 GetBook MarkInfo(lIndex,iType)
原 型: longGetBook MarkInfo(lIndex,iType);
2.1.12 HideMenuItem
原 型: long HideMenuItem(long lMenuType);
lMenuType工具栏开关,采用32位的数字作为开关,当相关位为1的时候,按钮显示,为0是按钮隐藏。
vShowHideMenu = 0x4000, //显示/隐藏菜单
Object.HideMenuItem(0x01 + 0x1000);
2.1.13 HttpInit
document.all.weboffice1.HttpInit();
2.1.14 HttpAddPostFile
原 型: longHttpAddPostFile(BSTR strName, BSTR strFile);
document.all.weboffice1.HttpAddPostFile("111","c:\\111.doc")
2.1.15 HttpAddPostString
原 型: longHttpAddPostString(BSTR strName, BSTR strValue);
document.all.WebOffice1.HttpAddPostString("DocTitle",myform.DocTitle.value);
2.1.16 HttpAddPostCurrFile
原 型: longHttpAddPostCurrFile(String field, String newFileName);
newFielName:上传后的新文件名。该参数可以为空,系统将自动为文件命名
document.all.WebOffice1.HttpAddPostCurrFile("DocContent","");
2.1.17 HttpPost
原 型: BSTR HttpPost(BSTRstrHttpURL);
var returnValue=document.all.WebOffice1.HttpPost("../saveDoc.jsp");
var returnValue=document.all.WebOffice1.HttpPost("http://127.0.0.1/saveDoc.jsp")
2.1.18 InsertFile
原 形:short InsertFile(LPCTSTR strFilePathName, shortnCurPos)
document.all.WebOffice1.InSertFile("http://XX.com/XX.doc",1);
document.all.WebOffice1.InSertFile("http://XX.com/XX.doc",2);
document.all.WebOffice1.InSertFile("http://XX.com/XX.doc",0);
document.all.WebOffice1.InSertFile("http://XX.com/XX.jpg",9);
document.all.WebOffice1.InSertFile("http://XX.com/XX.jpg",10);
document.all.WebOffice1.InSertFile("http://XX.com/XX.jpg",8);
2.1.19 IsOpened
var isOpened=document.all.WebOffice1.IsOpened();
2.1.20 IsSaved
var isSaved=document.all.WebOffice1.IsSaved();
2.1.21 LoadOriginalFile
原 型: longLoadOriginalFile(BSTR pcFileNameOrUrl, BSTR pcType);
要装载文件的本地路径或者URL,值为空表示新建文档,如果是在Http的Web环境下,可以传相对路径.
// 通过URL打开一个服务器文件,getdoc.asp代码见演示文件
document.all.WebOffice1.LoadOriginalFile("http://127.0.0.1/getdoc.asp?id=8","doc");
document.all.WebOffice1.LoadOriginalFile("/getdoc.asp?id=8","doc");
document.all.WebOffice1.LoadOriginalFile("./getdoc.asp?id=8","doc");
document.all.WebOffice1.LoadOriginalFile("","xls");
document.all.WebOffice1.LoadOriginalFile("C:\\demo.doc","doc");
2.1.22 OpenFileDlg
document.all.WebOffice1.OpenFileDlg();
2.1.23 ProtectDoc
原 型: longProtectDoc(long lProOrUn, long lType, BSTR strPWD);
document.all.WebOffice1.ProtectDoc(1,0, "12345");
document.all.WebOffice1.ProtectDoc(0,0, "12345");
2.1.24 PrintDoc
原 型: long PrintDoc(longblShowDlg);
document.all.WebOffice1.PrintDoc(1);
2.1.25 PutSaved
原 型: longPutSaved(boolean bSaved);
document.all.WebOffice1.PutSaved(0);
2.1.26 Save
document.all.WebOffice1.Save();
2.1.27 SaveAs
原 型: long SaveAs(BSTRstrFileName, long dwFileFormat);
document.all.WebOffice1.SaveAs("C:\\test.doc",0); //另存为Word文件
document.all.WebOffice1.SaveAs("C:\\test.txt",2); //另存为Txt文件
document.all.WebOffice1.SaveAs("C:\\test.rtf",6); //另存为Rtf文件
document.all.WebOffice1.SaveAs("C:\\test.xls",-4143); //另存为Excel文件
2.1.28 SetFieldValue
原 型: longSetFieldValue(BSTR strFieldName, BSTR strValue, BSTR strSheetName);
参 数:strFieldName:书签的名字,对于Excel文件,此数据位单元格
strValue:书签的值,该处可以是个用于返回数据的URL,用于套红头模板。对于Excel文件,如果插入的是图片,此数值为::JPG::+图片的路径
strSheetName:命令的类型,对于Excel文件此数值为Sheet的名称
└ ::FILE:: 调用本地或者URL的文件设置书签值(套红头)
document.all.WebOffice1.SetFieldValue("mark_1","北京","::ADDMARK::");
document.all.WebOffice1.SetFieldValue("mark_1","电子签章", "");
document.all.WebOffice1.SetFieldValue("mark_1","c:\\test.doc", "::FILE::");
// 套服务端红头1,getDoc.asp页用于返回要装载Word的二进制值,代码见演示文件
document.all.WebOffice1.SetFieldValue("mark_1","http://127.0.0.1/getdoc.asp?id=8", "::FILE::");
document.all.WebOffice1.SetFieldValue("mark_1","http://127.0.0.1/test.doc","::FILE::");
document.all.WebOffice1.SetFieldValue("mark_1","http://127.0.0.1/seal.bmp","::JPG::");
2.1.29 SetTrackRevisions
原 型: longSetTrackRevisions(long lValue);
document.all.WebOffice1.SetTrackRevisions(1);
document.all.WebOffice1.SetTrackRevisions(4);
2.1.30 ShowRevisions
原 型: longShowRevisions(long nNewValue);
document.all.WebOffice1.ShowRevisions(0); //隐藏修订
2.1.31 SetCurrUserName
原 型: longSetCurrUserName(BSTR strCurrUserName);
功 能:设置当前编辑Word、Excel的用户名,主要用于修订文档,标识不同人进行的不同操作
示 例:document.all.WebOffice1.SetCurrUserName("张三");
2.1.32 ShowDialog
原 型: long ShowDialog(longdwIndex);
功 能:
显示对话框
参 数:
dwIndex:对话框的ID数值,详细的数值列表请参照附件。
返回值:
示 例:
2.1.33 UnProtectDoc(BSTR strPwd)
原 型: long UnProtectDoc(BSTR strPwd);
document.all.WebOffice1.UnProtectDoc("12345");
2.2 属性
2.2.1 DocType
2.2.2 Version
2.2.3 AppVersion
2.2.4 lEventRet
2.2.5 IsModify
说 明:判断文档是否被修改,需要在LoadOrigarFile之前设置 OptionFlag|= 0x0400 才有效。
2.2.6 lContinue
功 能:用于NotifyWordEvent的处理函数中,可以终止相应事件的继续执行
OnNotifyWordEvent(BSTRstrEventName)
if(strEventName == “DocumentBeforeClose”)
2.3 事件
2.3.1 NotifyWordEvent
原 型: void NotifyWordEvent(BSTRstrEventName);
参数:strEventNameàWord/Excel的事件名,可能是以下的数值
备注:本事件在本版本扩展到Excel和Wps的支持,且可以终止该事件的继续执行(使用属性lContinue)。
2.3.2 NotifyCtrlReady
说 明:当控件准备完毕后触发,一般在这个事件中完成初始化的操作。
2.3.3 NotifyToolBarClick
原 型: voidNotifyToolBarClick(long iIndex);
(不适用于Office2007)每个按钮都有默认的处理动作,如果不希望触发默认的处理动作,需要在此时间中设置属性lEventRet = 0;
<SCRIPTLANGUAGE=javascript FOR=WebOffice1 VENT=NotifyToolBarClick(lCmd)>
WebOffice1_NotifyToolBarClick(lCmd)
functionWebOffice1_NotifyToolBarClick(lCmd) {
document.all.WebOffice1.lEventRet = 0;
附录:WebOffice文件Http上传原理
WebOffice文件Http上传原理分析
WebOffice控件使用了自身的文件Http上传接口实现文件和表单域的上传保存,本文将简要介绍该上传方式的原理和使用方法。注:WebOffice的上传接口和AIP是一致的。 原理 因为Web页面上的WebOffice打开的文件无法随表单记录提交到处理页面,所以我们把文件模拟成表单的文件域<input type=file …>,通过接口把文件和表单元素发送到保存记录的页面(过程类似表单的提交)。 主要上传接口: l HttpInit(); 该方法用于初始化上传接口,不需要设置参数 l HttpAddPostString(String FieldName, String someValue); 添加要提交的表单域, FieldName是要上传表单域名称,someValue是表单域值 例一: HttpAddPostString("username", "zhangSan"); 它类似域表单域的 <input type=text name=username value=zhangSan> 例二: HttpAddPostString("username", WebForm.username.value); …. <form name= WebForm > <input type=text name=username value=zhangSan> </form> 注意:如果使用 上传接口,那么form表单里的表单域不会被提交到处理页面。需要手工添加到上传接口(HttpAddPostString接口),然后通过控件发送到处理页面。例二使用了“WebForm.username.value”获取表单域值。 l HttpAddPostCurrFile(String fileName, String ReName); 添加当前WebOffice编辑的文件给上传接口,该接口把文件模拟到成一个表单的文件域,并提交到处理页面。 例一: HttpAddPostCurrFile("AipFile", ""); 该接口模拟表单文件域如下: <input type=file name=AipFile > 注意:第二个参数为空表示控件自动为文件命名,如:dj_temp.aip,如果需要重命名可以在第二个参数指明文件名称,也可在保存页面指定文件名称。 l HttpPost(String url); 执行上传操作将文件和表单域提交到url的页面进行保存操作,并获取url页面返回的执行结果 (是否成功,可以根据这个结果来获取服务器端执行的结果)。 url支持绝对路径和相对路径。 绝对路径,例如:http://192.168.0.1/savedoc.asp 相对路径要以“./”或者“../”开头。例如:./savedoc.asp 完整的上传接口演示 function SaveDoc() { var returnValue; //保存页面的返回值 document.all.WebOffice1.HttpInit(); //初始化Http引擎 // 添加相应的Post元素 document.all.WebOffice1.HttpAddPostString("username", WebForm. username.value); // 添加上传文件 document.all.WebOffice1.HttpAddPostCurrFile("AipFile ",""); // 提交上传文件 returnValue = document.all.WebOffice1.HttpPost("../saveDoc.jsp"); if("true" == returnValue){ alert("文件上传成功"); } else { alert("文件上传失败") } } 关于保存 WebOffice上传接口将数据流以Http方式提交到保存页面,至于对数据处理就和普通的文件上传处理一样了,具体代码参考附件(asp和jsp的实现)。 论坛:http://forum.dianju.cn/ |
web在线编辑word,excel,pdf插件-----WebOffice 文档控件API相关推荐
- weboffice控件接收html文件,WebOffice 文档控件API
目 录 WebOffice是基于客户端的ocx控件,它的功能是将Office文档(Word.Excel.WPS)嵌入到浏览器中,并调用Office中各种接口,完成文档编辑工作,然后使用控件的Ht ...
- 如何在谷歌Chrome新版浏览器中打开并编辑Word/Excel/PPT等Office文档?(视频演示)
如何在谷歌Chrome新版浏览器中打开并编辑Word/Excel/PPT等Office文档?
- 在线查看word,excel,pdf文件解决
眼看着项目要结束,提出新的需求(-_-!!习惯成自然了)需要支持在线查看word,excel,pdf文件,网页中嵌套word的时候,不让word文档占据整个网页,页面内还要有审批等功能,第一感觉想到控 ...
- 用pageOffice文档控件实现 office文档在线编辑
第三方文档控件,pageOffice 系统开发中经常要处理办公文档,如果word,excel,ppt,编辑整理,保存,归档. 开发市场上也有很多第三文文档控件,多年的总结,还是认为pageOffice ...
- office文档管理服务器编辑,_卓正软件 - PageOffice官方网站 - 在线编辑Word、Excel的Office文档控件...
Office 组件 在线显示.编辑.保存Word文档 √ √ √ 在线显示.编辑.保存Excel文档 √ √ √ 在线显示.编辑.保存PowerPoint文档 √ √ √ 在线播放PowerPoint ...
- Vue 预览word,excel,ppt等office文档-内网访问(基于onlyoffice,后端返回文件流)
Vue 预览word,excel等office 先看效果!! 需求背景:在前端页面中预览office文件且是内网访问,服务器不可访问外网的前提. 因此微软的接口就废掉了,因为他接口的条件是可以访问外网 ...
- word和pdf等常见文档格式如何转换
新手遇到文档转换问题时,常常因为找不到好的解决方法而弄得满头雾水,比如如何将PDF转成Word.Word怎么转成PDF.PPT可以转成PDF吗?等等,下面具体分享一些我的经验. 一.网页版迅捷PDF在 ...
- pdf文档控件Aspose.PDF for .NET 授权须知
Aspose.PDF是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档.无需使用Adobe Acrobat.此外,API提供压缩选项,表创建和处理,图形和图像 ...
- 在线编辑Word,Excel (WebOffice)
[b]1.前言[/b] 很多时候会用到在线编辑保存Word,Excel,这时我们需要用到WebOffice.源代码到[url]www.dsoframer.com[/url],注册后即可下载,完全免费使 ...
最新文章
- mysql统计出每个姓氏的人数_你见过什么偏僻的姓氏?明明是老虎的虎姓氏却读māo...
- python name_python中__name__的使用
- 找对象的过程中,我竟然理解了什么是机器学习!
- 多目标跟踪算法FairMOT深度解析
- 验证码实现(随机背景色及字体颜色,带扰乱线条)
- java swt 下拉列表_求助:SWT 下拉列表
- 手把手教你学dsp_新课免费看| 手把手教你学DSP,C2000从入门到精通
- python之(re)正则表达式下
- 荣耀鸿蒙os2.0公测版,鸿蒙OS 2.0他来了!华为HarmonyOS 2.0开发者公测版正式推送
- [网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
- Sklearn聚类算法之meanshift
- 贪心宝贝话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了。显然,作为多年拼搏的商人,XHD不会坐以待毙的。 一天,当他正在苦思冥想解困良策的时候,突然想到了自己的传家宝,那是公司成
- 你的六岁在玩儿泥巴,他们六岁已经在讲算法了
- 【Active Learning - 09】主动学习策略研究及其在图像分类中的应用:研究背景与研究意义
- 爱情故事:追忆似水流年 回味永恒的爱恋
- python入门论坛_PythonTab:Python中文开发者社区门户
- dos命令之 assoc 用法详解
- 精华|风控相关欺诈防范要点(规则制定)
- HDFS的读写流程步骤(附图文解析)
- JS去除数组中重复的元素
热门文章
- 关于MVC控制器导出Excel时MemoryStream流已关闭的问题
- 在vc2008中用_crtBreakAlloc调试内存泄漏
- ESXI6.7安装补丁
- java模拟登录新版正方_java 模拟登陆正方教务系统
- TVS管与压敏电阻的性能比较
- python算法习题(一): 排列组合
- 18年华为没有一项原创的发明
- 2019_WWW_Dual graph attention networks for deep latent representation of multifaceted social effect
- android使用百度地图SDK 去掉百度Logo的小技巧(转)
- c语言信用卡号验证,Javascript验证Visa和MasterCard信用卡号的方法