WebOffice控件的使用(二)
阿新 • • 發佈:2017-08-21
中文名 emp file操作 ack quest 裏的 icon equals span
作者:哇哇~~~
Java代碼
- 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控件的使用(二)