WebOffice控件的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebOffice控件的使用相关的知识,希望对你有一定的参考价值。
- SetMsgByName (String, String) 设置字段值
- GetMsgByName(String) 取得字段值
- MsgTextClear() 清除所有字段
- MsgError() 取得错误信息
- MsgError(String) 设置错误信息
- MsgErrorClear() 清除错误信息
- MsgVariant() 取得信息包内容
- MsgVariant(byte[]) 设置信息包内容
- MsgVersion() 取得信息包版本
- MsgFileLoad(String) 装入文件
- MsgFileSave(String) 保存文件
- MsgFileBody() 取得文件内容
- MsgFileBody(byte[]) 设置文件内容
- MsgFileSize() 取得文件大小
- MsgFileSize(int) 设置文件大小
- MsgFileClear() 清除文件内容
- 接口说明:
- SetMsgByName (FieldName String, FieldValue String)
- 功能说明 设置字段值
- 输入参数 设置字段域的名称与所对应的值。
- FieldName String 字段域的名称
- FieldValue String 字段域的值
- 输出参数 Boolean=成功/失败。
- 特别说明 系统公共
- GetMsgByName(FieldName String)
- 功能说明 取得字段值
- 输入参数 FieldName String 字段域的名称。
- 输出参数 String =字段域的值。
- 特别说明 系统公共
- MsgTextClear()
- 功能说明 清除所有字段
- 输入参数 无。
- 输出参数 无。
- 特别说明 系统公共
- MsgFileLoad(FileName String)
- 功能说明 装入文件
- 输入参数 FieldName String 服务器磁盘文件名称。
- 输出参数 Boolean=成功/失败。
- 特别说明 系统公共
- MsgFileSave(FileName String)
- 功能说明 保存文件
- 输入参数 FieldName String 服务器磁盘文件名称。
- 输出参数 Boolean=成功/失败。
- 特别说明 系统公共
- MsgFileBody()
- 功能说明 取得文件内容
- 输入参数 无。
- 输出参数 byte[],文件内容字节数组。
- 特别说明 系统公共
- MsgFileBody(byte[])
- 功能说明 设置文件内容
- 输入参数 byte[],文件内容字节数组。
- 输出参数 无。
- 特别说明 系统公共
- MsgFileSize()
- 功能说明 取得文件大小
- 输入参数 无。
- 输出参数 long 文件大小。
- 特别说明 系统公共
- MsgFileSize(int)
- 功能说明 设置文件大小
- 输入参数 int 文件大小。
- 输出参数 无。
- 特别说明 系统公共
- MsgFileClear()
- 功能说明 清除文件内容
- 输入参数 无。
- 输出参数 无。
- 特别说明 系统公共
- MsgError()
- 功能说明 取得错误信息
- 输入参数 无。
- 输出参数 String 错误信息。
- 特别说明 系统公共
- MsgError(String)
- 功能说明 设置错误信息
- 输入参数 String 错误信息内容。
- 输出参数 无。
- 特别说明 系统公共
- MsgErrorClear()
- 功能说明 清除错误信息
- 输入参数 无。
- 输出参数 无。
- 特别说明 系统公共
- MsgVariant()
- 功能说明 取得信息包内容
- 输入参数 无。
- 输出参数 byte[] 信息包所有内容。
- 特别说明 系统公共
- MsgVariant(byte[])
- 功能说明 设置信息包内容
- 输入参数 byte[] 数据包内容。
- 输出参数 Boolean=成功/失败。
- 特别说明 系统公共
- MsgVersion()
- 功能说明 取得信息包版本
- 输入参数 无。
- 输出参数 String 版本信息。
- 特别说明 系统公共
- 如何设置全局变量
- 设置全局变量(假设form的名字为webform):
- webform.WebOffice.WebUrl="<%=mServerUrl%>";
- webform.WebOffice.RecordID="<%=mRecordID%>";
- webform.WebOffice.Template="<%=mTemplate%>";
- webform.WebOffice.FileName="<%=mFileName%>";
- webform.WebOffice.FileType="<%=mFileType%>";
- webform.WebOffice.EditType="<%=mEditType%>";
- webform.WebOffice.UserName="<%=mUserName%>";
- 其中, mServerUrl 是指服务器端的处理程序,演示程序为OfficeServer这个文件(必填);
- mRecordID 是指当前要打开的文档记录唯一编号,通过这个编号,可以定位该
- 文档记录(可以为空);
- mTemplate 是指当前文档使用的模版(可以为空);
- mFileName是指当前文档的中文名称(可以为空);
- mFileType 是指当前文档的类型(必填);
- mEditType 是指当前文档的打开方式(必填);
- mUserName是指当前用户名(必填);
- 通常我们通过mRecordID来定位文档,但也可以通过文件名称来定位文档,这需要看用户的需求来定。
- 如何调用iMsgServer2000.class组件
- 申明调用对象:
- private DBstep.iMsgServer2000 MsgObj;
- 生成对象实例:
- MsgObj=new DBstep.iMsgServer2000();
- 取得客户端WebEditor.ocx发送的数据包
- MsgObj.MsgVariant(ReadPackage(request));
- 返回处理后的数据包
- SendPackage(response);
- 其中ReadPackage和SendPackage函数如下:
- //取得客户端发来的数据包
- private byte[] ReadPackage(HttpServletRequest request){
- byte mStream[]=null;
- int totalRead = 0;
- int readBytes = 0;
- int totalBytes = 0;
- try{
- totalBytes = request.getContentLength();
- mStream = new byte[totalBytes];
- while(totalRead < totalBytes){
- request.getInputStream();
- readBytes = request.getInputStream().read(mStream, totalRead, totalBytes - totalRead);
- totalRead += readBytes;
- continue;
- }
- }catch (Exception e){
- System.out.println(e.toString());
- }
- return (mStream);
- }
- //发送处理后的数据包
- private void SendPackage(HttpServletResponse response){
- try{
- ServletOutputStream OutBinarry=response.getOutputStream() ;
- OutBinarry.write(MsgObj.MsgVariant()) ;
- OutBinarry.flush();
- OutBinarry.close();
- }catch(Exception e){
- System.out.println(e.toString());
- }
- }
- 服务器端可以获得的全局参数;其中OPTION是OCX函数操作参数,
- 不同的操作,这个值不同
- mOption = MsgObj.GetMsgByName("OPTION")
- mRecordId = MsgObj.GetMsgByName("RECORDID")
- mTemplate = MsgObj.GetMsgByName("TEMPLATE")
- mFileName = MsgObj.GetMsgByName("FILENAME")
- mFileType = MsgObj.GetMsgByName("FILETYPE")
- mUserName = MsgObj.GetMsgByName("USERNAME")
- 此时,mOption 就会得到 “LOADFILE”这样的操作,既
- mOption = “LOADFILE”
- 请注意:任何操作都会得到
- mRecordId = MsgObj.GetMsgByName("RECORDID")
- mTemplate = MsgObj.GetMsgByName("TEMPLATE")
- mFileName = MsgObj.GetMsgByName("FILENAME")
- mFileType = MsgObj.GetMsgByName("FILETYPE")
- mUserName = MsgObj.GetMsgByName("USERNAME")
- 这些全局变量的值,提供给编程开发使用.
- LoadFile()
- 功能: 打开Office文档,首先打开RecordID指定的文件
- 调用: WebOffice.LoadFile()
- 说明: Office公共,服务器应用程序操作如下:
- LOADFILE 调入RecordID指定的文件
- 操作命令
- 服务器应用程序操作如下
- WebOpen()
- 操作顺序为:
- LOADFILE 调入RecordID指定的文件
- mOption = MsgObj.GetMsgByName("OPTION")
- mOption的值为“LOADFILE”
- 说明:
- 1、此函数发送此LOADFILE操作
- 2、系统默认对数据库操作;
- 如果对数据库操作,只要把数据库中文档的内容付给MsgObj.MsgFileBody就可以了,
- 如果想对文件进行操作,就不能使用MsgObj.MsgFileBody,只要使用MsgObj.MsgFileLoad(“文件名”)就可以把具体的服务器上的文件调入进来。
- 实例:
- IE客户端 javascript调用方法:
- function LoadDocument(){
- try{
- webform.WebOffice.LoadFile(); //打开该文档
- StatusMsg(webform.WebOffice.Status);
- }catch(e){}
- }
- JSP服务端处理方法
- 如果文档保存在服务器的数据库中
- mOption=MsgObj.GetMsgByName("OPTION") ;
- //调用文档
- if(mOption.equalsIgnoreCase("LOADFILE")){
- mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文档编号
- //mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文档名称
- //mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
- MsgObj.MsgTextClear(); //清除所有变量
- 通过mRecordID找到数据库中的记录,然后将数据库中的文件流付给mFileBody
- //调入文档
- if (如果读取文件流成功){
- MsgObj.MsgFileBody(mFileBody); //将文件信息打包
- MsgObj.SetMsgByName("STATUS","打开成功!"); //设置状态信息
- MsgObj.MsgError(""); //清除错误信息
- }else{
- MsgObj.MsgError("打开失败!"); //设置错误信息
- }
- }
- 如果文档保存在服务器的文件中
- mOption=MsgObj.GetMsgByName("OPTION") ;
- //调用文档
- if(mOption.equalsIgnoreCase("LOADFILE")){
- mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文档编号
- mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文档名称
- mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
- MsgObj.MsgTextClear();
- //调入文档
- if (MsgObj.MsgFileLoad(“路径”+mFileName)) {
- MsgObj.SetMsgByName("STATUS","打开成功!"); //设置状态信息
- MsgObj.MsgError(""); //清除错误信息
- }else{
- MsgObj.MsgError("打开失败!"); //设置错误信息
- }
- }
- SaveFile()
- 功能: 保存Office文档。
- 调用: WebOffice.SaveFile()
- 说明: Office公共,服务器应用程序操作如下:
- SAVEFILE 保存RecordID指定的文件
- 操作命令
- 服务器应用程序操作如下
- WebSave()
- SAVEFILE保存RecordID指定的文件
- mOption = MsgObj.GetMsgByName("OPTION")
- mOption的值为“SAVEFILE”
- 说明:
- 系统默认对数据库操作;
- 如果对数据库操作,只要把MsgObj.MsgFileBody的内容取出,保存到数据库中就可以了,
- 如果想对文件进行操作,只要使用MsgObj.MsgFileSave(“文件名”)就可以把文件写到服务器上
- 实例:
- IE客户端 Javascript调用方法:
- function SaveDocument(){
- try{
- webform.WebOffice.SaveFile(); //保存文档
- StatusMsg(webform.WebOffice.Status);
- }catch(e){}
- }
- JSP服务端处理方法
- 如果文档保存在服务器的数据库中
- mOption=MsgObj.GetMsgByName("OPTION") ;
- //请求保存文档
- if(mOption.equalsIgnoreCase("SAVEFILE")) {
- mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文档编号
- mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文档名称
- mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
- mFileSize=MsgObj.MsgFileSize(); //取得文档大小
- mFileDate=DbaObj.GetDateTime(); //取得文档时间
- mFileBody=MsgObj.MsgFileBody(); //取得文档内容
- mUserName= MsgObj.GetMsgByName("USERNAME"); //取得保存用户名称
- mDescript="通用版本"; //版本说明
- MsgObj.MsgTextClear();
- if (将mFileBody里的文件流信息及其他信息保存到数据库中) //保存文档内容
- {
- MsgObj.SetMsgByName("STATUS", "保存成功!"); //设置状态信息
- MsgObj.MsgError(""); //清除错误信息
- }else{
- MsgObj.MsgError("保存失败!"); //设置错误信息
- }
- MsgObj.MsgFileClear();
- }
- 如果文档保存在服务器的文件中
- mOption=MsgObj.GetMsgByName("OPTION") ;
- if(mOption.equalsIgnoreCase("SAVEFILE")) //请求保存文档
- {
- mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文档编号
- mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文档名称
- mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
- mFileSize=MsgObj.MsgFileSize(); //取得文档大小
- mFileDate=DbaObj.GetDateTime(); //取得文档时间
- mUserName=MsgObj.GetMsgByName("USERNAME"); //取得保存用户名称
- mDescript="通用版本"; //版本说明
- MsgObj.MsgTextClear();
- 将其他信息保存到数据库中
- if (MsgObj.MsgFileSave(“路径”+mFileName)) //保存文档
- {
- MsgObj.SetMsgByName("STATUS", "保存成功!"); //设置状态信息
- MsgObj.MsgError(""); //清除错误信息
- }else{
- MsgObj.MsgError("保存失败!"); //设置错误信息
- }
- MsgObj.MsgFileClear();
- }
以上是关于WebOffice控件的使用的主要内容,如果未能解决你的问题,请参考以下文章