金蝶 苍穹 WebOffice控件使用

控件编程模型

WebOffice控件的编程模型为WebOffice,派生自控件编程模型基类Control:

Java

 

package kd.bos.form.control;

public class WebOffice extends Control{

插件可以通过如下代码,获取到界面上WebOffice控件编程模型实例:

Java

 

WebOffice webOffice = this.getView().getControl("webofficeap");

WebOffice控件,目前有如下方法:

 

方法

参数

说明

save

String 文件名

保存文档

close

关闭文档

open

String 文档URL

打开文档

open

String,String 文档URL,用户名

打开文档

open

String,List<String>,String 文档URL,书签,密码

打开文档,仅设定可编辑区域才可供用户修改

open

String,String,List<String>,String 文档URL,用户名,书签,密码

打开文档,仅设定可编辑区域才可供用户修改

openNew

WebOfficeFileType 文件类型

支持新建word、excel、ppt

openAll

String, String URL文档,文件名

支持打开多种文档包含Excel,需要传入文件名以打开文件

addTable

String[][] 插入数据

添加表格

addTable

String,String[][] 书签,插入数据

指定处添加表格

setTrackingMode

String, WebOfficeTrackingType 用户名,类型

设置留痕模式

addBookmarkForSelection

String 书签

为鼠标选中内容设置为书签

setTextStyle

String,String 书签名,第二个参数取值:'标题、'引用'等,具体查看word的标题样式名称

调整指定书签内容的标题样式

mergeDocs

WebOfficeMergeType, String[]

合并类型,合并文档URL

合并其他文档至当前文档

mergeDocsByBookmark

String,String[] 书签,合并文档URL

合并其他文档至当前文档选中页签处

addTableColumns

String,String[][] 书签,列数据

表格添加列数据

addTableRows

String,String[][] 书签,行数据

表格添加行数据

setCheckBoxChecked

String,String…是否选中,复选框

设置复选框值

getAllCheckBoxs

获取文档中所有的复选框

getTextByBookmark

String 书签

依据书签获取文档内容

isDocChanged

获取文档是否有改动

getAllBookmarks

获取所有书签

checkBookmark

String 书签

查询书签是否存在

showTracesBy

String,boolean 用户名,是否显示修改痕迹

按照用户名是否显示某用户的修改痕迹

showAllTraces

boolean 是否显示

切换显示痕迹

setEditableAreas

List<String>,String 书签,密码

设置文档可编辑区域,只有传递标签选中区域才能被当前用户编辑

setDocUnLimitByRole

List<String> 书签

取消文档可编辑区域,可编辑其他区域

deleteSelectedAreaEditBookmark

String 书签

删除编辑标签

setSelectedAreaEditBookmark

String 书签

对选中区域设置可编辑标签

unLimitDoc

String 密码

解除限制文档编辑

limitDoc

String 密码

限制文档编辑

cancelProtectDoc

String 密码

取消文档保护

protectDoc

WebOfficeDocProtectionType, String 保护类型,密码

文档保护

showCommentDialog

弹出添加批注的框

locateMark

String 书签

定位书签

deleteMarks

List<String> 书签列表

删除书签

modifyMarks

List<WebOfficeMark> 书签列表

修改书签

addMarks

WebOfficeMark 书签

添加书签

insertValue

String 值

插入值

insertValue

String,boolean 值,是否换行

插入值

compareFile

String,String,String, String 第一个文档URL,第一个文挡名称,第二个文挡URL,第二个文档名称

比较文档

sendIsFieldRevise

String 书签

是否被修订

setCaption

String 标题

插入标题

setMenubar

Boolean是否显示

设置菜单栏是否显示

setTitlebar

Boolean 是否显示

设置标题栏是否显示

setDocAsField

String 书签

设置整个文档内容为书签

setToolbars

Boolean 是否显示

设置工具栏是否显示

sendOpenStatus

获取文档打开状态

reportData

Map<String,Object>  数据

回调数据

upload

Map<String, Object> 文档上传成功后的相关信息

文档上传成功后上报接口

addDataListener

WebOfficeDataListener weboffice前端数据回调事件监听

添加前端数据回调事件

addUploadListener

UploadListener 上传事件监听器

添加上传事件

getDataListeners

获取数据监听器

afterClose

Map<String,Object>  数据

数据发生改变,weboffice浏览器关闭后可触发关闭后事件

 

温馨提示

WebOffice控件打开需要浏览器帮助类WebOfficeBrowserHelper,否则在Chrome上打开无法显示

  • 案例说明:

点击开一个有WebOffice控件的表单,否则直接在Chrome上打开会导致显示空白:

 下面这个是使用浏览器帮助类打开后的页面,可以正常显示出来:

  • 示例代码:

Java

 

public class WebOfficeSample extends AbstractFormPlugin {

    ...

@Override

    public void itemClick(ItemClickEvent evt) {

        super.itemClick(evt);

        switch (evt.getItemKey()){

            case "btn_doc": showDocEdit();break;

        }

}

 

public void showDocEdit(){

    ....

Map<String,Object> customParams = new HashMap<>();

customParams.put("id",id);

customParams.put("doc_number",docNumber);

customParams.put("doc_url",docUrl);

customParams.put("doc_name",docName);

/**

       * 内建浏览器打开方式参数

* @param String formId 表单Id

       */

WebOfficeBrowserParam webOfficeBrowserParam = new WebOfficeBrowserParam("test_wb_tpl_edit");

//设置参数

webOfficeBrowserParam.setParams(customParams);

webOfficeBrowserParam.setHideAddressBar(true);

// 调用浏览器帮助类,构建打开参数,返回url

String url = WebOfficeBrowserHelper.buildUrl(webOfficeBrowserParam);

getView().openUrl(url);

    }

 

}

 

 

控件使用示例

1、 save方法

  • 案列说明:点击保存按钮保存文件
  • 示例代码:

Java

 

public class WebOfficeSample extends AbstractFormPlugin {

    @Override

public void registerListener(EventObject e) {

addClickListeners("btn_save");

}

    @Override

public void click(EventObject evt) {

     super.click(evt);

     Control ctrl = (Control) evt.getSource();

     switch(ctrl.getKey()){

            case "btn_save": saveDoc();break;

default: break;

}

}

private void saveDoc (){

 

String name = (String)this.getModel().getValue("name");

If(StringUtils.isBlank(name)){

getView().showErrorNotification("文件名不能为空");

     return;

}

WebOffice webOffice = getControl("webofficeap");

/**

       *  WebOffice 调用save方法

* @param name 文件名

       */

webOffice.save(name);

    }

    

}

 

 

2、 close方法

  • 案列说明:点击关闭按钮关闭文件
  • 示例代码:

Java

 

public class WebOfficeSample extends AbstractFormPlugin {

    //……其他类似简略

private void close (){

WebOffice webOffice = getControl("webofficeap");

/**

       *  WebOffice 调用close方法

       */

webOffice.close();

    }

    

}

 

 

 

3、 open方法

  • 案列说明:点击打开按钮WebOffice打开文档
  • 示例代码:

Java

 

public class WebOfficeSample extends AbstractFormPlugin {

    //……其他类似简略

private void openDoc (){

//这里的url可以是通过上传附件后获取到的url,也可以是本地文档url

String url ="D://feature//bos_core//kd_bos//bos//webofficedemo//src//main//resources//docsUrl.docx";

WebOffice webOffice = getControl("webofficeap");

/**

       *  WebOffice 调用open方法

* @param url 文件url

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
版本修改记录: V2.2.0.2修改: 修改了HttpPost相对路径的一些问题。 V2.2.0.0增加: [id(0x00010041), helpstring("Get Rev Index")] HRESULT GetRevCount( [out,retval] long * pbool); [id(0x00010042), helpstring("Get Rev Index Info")] HRESULT GetRevInfo([in] long lIndex, [in] long lType, [out,retval] BSTR* pbool); [id(0x00010043), helpstring("Set Doc Prop")] HRESULT SetValue([in] BSTR strValue, [in] BSTR strName, [out,retval] long* pbool); [id(0x00010044), helpstring("Set Doc Variable")] HRESULT SetDocVariable([in] BSTR strVarName, [in] BSTR strValue,[in] long lOpt, [out,retval] long* pbool); [id(0x00010045), helpstring("Save page To Doc")] HRESULT SetPageAs([in] BSTR strLocalFile, [in] long lPageNum, [in] long lType,[out,retval] long* pbool); ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- LoadDso.js var s = "" s += "" s += "" document.write(s) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- 接口文档: /* 1.新建 */ //新建Word document.all.FramerControl1.CreateNew("Word.Document"); //新建Excel document.all.FramerControl1.CreateNew("Excel.Sheet"); /* 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); /* 3.保存文件 */ //到本地 document.all.FramerControl1.Save("c:\\1.doc",true); //服务器 /*增加Http协议Post上传接口,可以Post一个动态页面(jsp,asp,php...),由动态页面负责解析数据 bool HttpInit(); bool HttpAddPostString(BSTR strName, BSTR strValue); bool HttpAddPostCurrFile(BSTR strFileID, BSTR strFileName); BSTR HttpPost(BSTR bstr); */ //初始化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"); /* 4.修订留痕 */ //进入留痕状态 document.all.FramerControl1.SetTrackRevisions(1); //进入非留痕状态 document.all.FramerControl1.SetTrackRevisions(0); //接受当前修订 document.all.FramerControl1.SetTrackRevisions(4); /* 5.设置当前用户 */ document.all.FramerControl1.SetCurrUserName("张三"); /* 6.设置当前时间(笔迹留痕会显示("Like 2006:02:07 11:11:11") */ document.all.FramerControl1.SetCurrTime("2006:02:07 11:11:11"); /* 7.设置和创建书签,此功能比较强大,设置书签数据、添加书签和添加红头文件就靠他了 SetFieldValue(BSTR strFieldName, BSTR strValue, BSTR strCmdOrSheetName) strFieldName:书签名 strValue:要设置的值 strCmdOrSheetName: 命令 ::ADDMARK:: 添加BookMark ::DELMARK:: 删除这个BookMark ::GETMARK:: 定位到这个BookMark ::FILE:: 插入的是文件 ::JPG:: 插入的是图片 一般来说:WORD中书签是做好的,可以通过此接口把外界数据设置进书签中去。 */ //在当前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::"); /* 8.设置菜单显示情况 BOOL SetMenuDisplay(long lMenuFlag) lMenuFlag为以下数值的组合 #define MNU_NEW 0x01 #define MNU_OPEN 0x02 #define MNU_CLOSE 0x04 #define MNU_SAVE 0x08 #define MNU_SAVEAS 0x16 #define MNU_PGSETUP 0x64 #define MNU_PRINT 0x256 #define MNU_PROPS 0x32 #define MNU_PRINTPV 0x126 */ //只有“新建”菜单可用 document.all.FramerControl1..SetMenuDisplay(1); //只有“打开”菜单可用 document.all.FramerControl1.SetMenuDisplay(2); //只有“打开”和“新建”菜单可用 document.all.FramerControl1.SetMenuDisplay(3); /* 9.保护文档和解保护文档 lProOrUn:1:保护文档;0:解除保护 lProType: wdNoProtection = -1, wdAllowOnlyRevisions = 0, wdAllowOnlyComments = 1, wdAllowOnlyFormFields = 2 strProPWD:密码 */ //完全保护文档,密码为"pwd" document.all.FramerControl1.ProtectDoc(1,1,"pwd"); //解除文档保护 document.all.FramerControl1.ProtectDoc(0,1,"pwd"); /* 10.显示或隐藏修订内容 ShowRevisions(long nNewValue) nNewValue = 0 则隐藏修订 = 1 则显示修订 */ //显示修订留痕 document.all.FramerControl1.ShowRevisions(1); //隐藏修订留痕 document.all.FramerControl1.ShowRevisions(0); /* 11.插入合并文件, strFieldPath 文件路径,可以是http,ftp的路径 pPos = 0 //当前鼠标位置 1;文件开头 2;文件末尾 pPos的第4位为1的时候,代表插入的是图片 InSertFile(BSTR strFieldPath, long lPos) */ //文件头部插入文件 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); /* 0x31. 文档另存为 HRESULT SaveAs([in] VARIANT strFileName, [in] VARIANT dwFileFormat, [out,retval] long* pbool); 参数: strFileName:文件本地路径,如c:\\11.doc dwFileFormat: 文件格式 dwFileFormat的数值为: Excel: Type enum XlFileFormat { xlAddIn = 18, xlCSV = 6, xlCSVMac = 22, xlCSVMSDOS = 24, xlCSVWindows = 23, xlDBF2 = 7, xlDBF3 = 8, xlDBF4 = 11, xlDIF = 9, xlExcel2 = 16, xlExcel2FarEast = 27, xlExcel3 = 29, xlExcel4 = 33, xlExcel5 = 39, xlExcel7 = 39, xlExcel9795 = 43, xlExcel4Workbook = 35, xlIntlAddIn = 26, xlIntlMacro = 25, xlWorkbookNormal = -4143, xlSYLK = 2, xlTemplate = 17, xlCurrentPlatformText = -4158, xlTextMac = 19, xlTextMSDOS = 21, xlTextPrinter = 36, xlTextWindows = 20, xlWJ2WD1 = 14, xlWK1 = 5, xlWK1ALL = 31, xlWK1FMT = 30, xlWK3 = 15, xlWK4 = 38, xlWK3FM3 = 32, xlWKS = 4, xlWorks2FarEast = 28, xlWQ1 = 34, xlWJ3 = 40, xlWJ3FJ3 = 41, xlUnicodeText = 42, xlHtml = 44 }; Word: Type enum WdSaveFormat { wdFormatDocument = 0, wdFormatTemplate = 1, wdFormatText = 2, wdFormatTextLineBreaks = 3, wdFormatDOSText = 4, wdFormatDOSTextLineBreaks = 5, wdFormatRTF = 6, wdFormatUnicodeText = 7, wdFormatEncodedText = 7, wdFormatHTML = 8 }; PPT: enum PpSaveAsFileType { ppSaveAsPresentation = 1, ppSaveAsPowerPoint7 = 2, ppSaveAsPowerPoint4 = 3, ppSaveAsPowerPoint3 = 4, ppSaveAsTemplate = 5, ppSaveAsRTF = 6, ppSaveAsShow = 7, ppSaveAsAddIn = 8, ppSaveAsPowerPoint4FarEast = 10, ppSaveAsDefault = 11, ppSaveAsHTML = 12, ppSaveAsHTMLv3 = 13, ppSaveAsHTMLDual = 14, ppSaveAsMetaFile = 15, ppSaveAsGIF = 16, ppSaveAsJPG = 17, ppSaveAsPNG = 18, ppSaveAsBMP = 19 }; */ /* 0x32. 删除本地文件 HRESULT DeleteLocalFile([in] BSTR strFilePath); 参数: strFileName:文件本地路径,如c:\\11.doc */ /* 0x33.创建临时文件 HRESULT GetTempFilePath([out,retval] BSTR* strValue); 返回: 临时文件的路径地址。使用完后,用DeleteLocalFile 删除 */ /* 0x34.设置文档显示模式 HRESULT ShowView([in] long dwViewType, [out,retval] long * pbool); dwViewType的可取值为: enum WdViewType { wdNormalView = 1, wdOutlineView = 2, wdPrintView = 3, wdPrintPreview = 4, wdMasterView = 5, //这个是大纲 wdWebView = 6 }; */ //大纲模式 document.all.FramerControl1.ShowView(5); /* 0x39:下载远程文件 HRESULT DownloadFile( [in] BSTR strRemoteFile, [in] BSTR strLocalFile, [out,retval] BSTR* strValue); 参数: strRemoteFile:远程路径地址,http or Ftp strLocalFile: 本地保存地址,if strLocalFile == NULL then Create Temp File and return TempFile's Path */ /* 0x40:增加Http上传时候的,附加其他文件 HRESULT HttpAddPostFile([in] BSTR strFileID, [in] BSTR strFileName, [out,retval] long* pbool); 参数: strFileID:文件的ID,供服务器端页面解析 strFileName: 本地文件地址 */ /* 0x41,0x42.获取详细的修订信息。 GetRevCount( [out,retval] long * pbool); GetRevInfo([in] long lIndex, [in] long lType, [out,retval] BSTR* pbool); 例子如下 */ var vCount; vCount = document.all.FramerControl1.GetRevCount(); alert(vCount); var vOpt = 0; var vDate; for(var i=1; i<= vCount; i++){ vOpt = document.all.FramerControl1.GetRevInfo(i,2); if("1" == vOpt){ vOpt = "插入"; }else if("2" == vOpt){ vOpt = "删除"; }else{ vOpt = "未知操作"; } vDate = new String(document.all.FramerControl1.GetRevInfo(i,1)); vDate = parseFloat(vDate); alert(vDate); dateObj = new Date(vDate); alert(dateObj.getYear() + "年" + dateObj.getMonth() + 1 + "月" + dateObj.getDate() +"日" + dateObj.getHours() +"时" + dateObj.getMinutes() +"分" + dateObj.getSeconds() +"秒" ); alert("用户:"+document.all.FramerControl1.GetRevInfo(i,0) + "\r\n操作:" + vOpt + "\r\n内容:" + document.all.FramerControl1.GetRevInfo(i,3)); } /* 0x43.设置基本信息: HRESULT SetValue([in] BSTR strValue, [in] BSTR strName, [out,retval] long* pbool); 1.设置文件只读密码 SetValue("password","::DOCPROP:PassWord"); 2.设置文件修改密码 SetValue("password","::DOCPROP:WritePW"); 返回值: 0 正确 -1:不支持此命令,请确定您的第二个参数没有传错 -127:异常 */ //设置文件只读密码 document.all.FramerControl1.SetValue("password","::DOCPROP:PassWord"); //设置文件修改密码 document.all.FramerControl1.SetValue("password","::DOCPROP:WritePW"); /* 0x44.设置文档变量,这个很少能用到 HRESULT SetDocVariable([in] BSTR strVarName, [in] BSTR strValue,[in] long lOpt, [out,retval] long* pbool); strVarName: 变量名 strVlaue:变量值 lOpt: 操作类型, 按位 第一位为1: 表示update域关联的 第二位为1: 表示如果没有这个变量则添加 第三位为1: 未来支持 return: 0:OK -127:异常 */ /* 0x45: 分页保存 HRESULT SetPageAs([in] BSTR strLocalFile, [in] long lPageNum, [in] long lType,[out,retval] long* pbool); strLocalFile:本地路径 lPageNum:页数 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书耳朵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值