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();
        }
 

你可能感兴趣的:(JavaScript,应用服务器,IE,Office,webform)