1. 程式人生 > >WebOffice控件的使用(二)

WebOffice控件的使用(二)

中文名 emp file操作 ack quest 裏的 icon equals span

作者:哇哇~~~ Java代碼 技術分享
  1. SetMsgByName (String, String) 設置字段值
  2. GetMsgByName(String) 取得字段值
  3. MsgTextClear() 清除所有字段
  4. MsgError() 取得錯誤信息
  5. MsgError(String) 設置錯誤信息
  6. MsgErrorClear() 清除錯誤信息
  7. MsgVariant() 取得信息包內容
  8. MsgVariant(byte[]) 設置信息包內容
  9. MsgVersion() 取得信息包版本
  10. MsgFileLoad(String) 裝入文件
  11. MsgFileSave(String) 保存文件
  12. MsgFileBody() 取得文件內容
  13. MsgFileBody(byte[]) 設置文件內容
  14. MsgFileSize() 取得文件大小
  15. MsgFileSize(int) 設置文件大小
  16. MsgFileClear() 清除文件內容
  17. 接口說明:
  18. SetMsgByName (FieldName String, FieldValue String)
  19. 功能說明 設置字段值
  20. 輸入參數 設置字段域的名稱與所對應的值。
  21. FieldName String 字段域的名稱
  22. FieldValue String 字段域的值
  23. 輸出參數 Boolean=成功/失敗。
  24. 特別說明 系統公共
  25. GetMsgByName(FieldName String)
  26. 功能說明 取得字段值
  27. 輸入參數 FieldName String 字段域的名稱。
  28. 輸出參數 String =字段域的值。
  29. 特別說明 系統公共
  30. MsgTextClear()
  31. 功能說明 清除所有字段
  32. 輸入參數 無。
  33. 輸出參數 無。
  34. 特別說明 系統公共
  35. MsgFileLoad(FileName String)
  36. 功能說明 裝入文件
  37. 輸入參數 FieldName String 服務器磁盤文件名稱。
  38. 輸出參數 Boolean=成功/失敗。
  39. 特別說明 系統公共
  40. MsgFileSave(FileName String)
  41. 功能說明 保存文件
  42. 輸入參數 FieldName String 服務器磁盤文件名稱。
  43. 輸出參數 Boolean=成功/失敗。
  44. 特別說明 系統公共
  45. MsgFileBody()
  46. 功能說明 取得文件內容
  47. 輸入參數 無。
  48. 輸出參數 byte[],文件內容字節數組。
  49. 特別說明 系統公共
  50. MsgFileBody(byte[])
  51. 功能說明 設置文件內容
  52. 輸入參數 byte[],文件內容字節數組。
  53. 輸出參數 無。
  54. 特別說明 系統公共
  55. MsgFileSize()
  56. 功能說明 取得文件大小
  57. 輸入參數 無。
  58. 輸出參數 long 文件大小。
  59. 特別說明 系統公共
  60. MsgFileSize(int)
  61. 功能說明 設置文件大小
  62. 輸入參數 int 文件大小。
  63. 輸出參數 無。
  64. 特別說明 系統公共
  65. MsgFileClear()
  66. 功能說明 清除文件內容
  67. 輸入參數 無。
  68. 輸出參數 無。
  69. 特別說明 系統公共
  70. MsgError()
  71. 功能說明 取得錯誤信息
  72. 輸入參數 無。
  73. 輸出參數 String 錯誤信息。
  74. 特別說明 系統公共
  75. MsgError(String)
  76. 功能說明 設置錯誤信息
  77. 輸入參數 String 錯誤信息內容。
  78. 輸出參數 無。
  79. 特別說明 系統公共
  80. MsgErrorClear()
  81. 功能說明 清除錯誤信息
  82. 輸入參數 無。
  83. 輸出參數 無。
  84. 特別說明 系統公共
  85. MsgVariant()
  86. 功能說明 取得信息包內容
  87. 輸入參數 無。
  88. 輸出參數 byte[] 信息包所有內容。
  89. 特別說明 系統公共
  90. MsgVariant(byte[])
  91. 功能說明 設置信息包內容
  92. 輸入參數 byte[] 數據包內容。
  93. 輸出參數 Boolean=成功/失敗。
  94. 特別說明 系統公共
  95. MsgVersion()
  96. 功能說明 取得信息包版本
  97. 輸入參數 無。
  98. 輸出參數 String 版本信息。
  99. 特別說明 系統公共
  100. 如何設置全局變量
  101. 設置全局變量(假設form的名字為webform):
  102. webform.WebOffice.WebUrl="<%=mServerUrl%>";
  103. webform.WebOffice.RecordID="<%=mRecordID%>";
  104. webform.WebOffice.Template="<%=mTemplate%>";
  105. webform.WebOffice.FileName="<%=mFileName%>";
  106. webform.WebOffice.FileType="<%=mFileType%>";
  107. webform.WebOffice.EditType="<%=mEditType%>";
  108. webform.WebOffice.UserName="<%=mUserName%>";
  109. 其中, mServerUrl 是指服務器端的處理程序,演示程序為OfficeServer這個文件(必填);
  110. mRecordID 是指當前要打開的文檔記錄唯一編號,通過這個編號,可以定位該
  111. 文檔記錄(可以為空);
  112. mTemplate 是指當前文檔使用的模版(可以為空);
  113. mFileName是指當前文檔的中文名稱(可以為空);
  114. mFileType 是指當前文檔的類型(必填);
  115. mEditType 是指當前文檔的打開方式(必填);
  116. mUserName是指當前用戶名(必填);
  117. 通常我們通過mRecordID來定位文檔,但也可以通過文件名稱來定位文檔,這需要看用戶的需求來定。
  118. 如何調用iMsgServer2000.class組件
  119. 申明調用對象:
  120. private DBstep.iMsgServer2000 MsgObj;
  121. 生成對象實例:
  122. MsgObj=new DBstep.iMsgServer2000();
  123. 取得客戶端WebEditor.ocx發送的數據包
  124. MsgObj.MsgVariant(ReadPackage(request));
  125. 返回處理後的數據包
  126. SendPackage(response);
  127. 其中ReadPackage和SendPackage函數如下:
  128. //取得客戶端發來的數據包
  129. private byte[] ReadPackage(HttpServletRequest request){
  130. byte mStream[]=null;
  131. int totalRead = 0;
  132. int readBytes = 0;
  133. int totalBytes = 0;
  134. try{
  135. totalBytes = request.getContentLength();
  136. mStream = new byte[totalBytes];
  137. while(totalRead < totalBytes){
  138. request.getInputStream();
  139. readBytes = request.getInputStream().read(mStream, totalRead, totalBytes - totalRead);
  140. totalRead += readBytes;
  141. continue;
  142. }
  143. }catch (Exception e){
  144. System.out.println(e.toString());
  145. }
  146. return (mStream);
  147. }
  148. //發送處理後的數據包
  149. private void SendPackage(HttpServletResponse response){
  150. try{
  151. ServletOutputStream OutBinarry=response.getOutputStream() ;
  152. OutBinarry.write(MsgObj.MsgVariant()) ;
  153. OutBinarry.flush();
  154. OutBinarry.close();
  155. }catch(Exception e){
  156. System.out.println(e.toString());
  157. }
  158. }
  159. 服務器端可以獲得的全局參數;其中OPTION是OCX函數操作參數,
  160. 不同的操作,這個值不同
  161. mOption = MsgObj.GetMsgByName("OPTION")
  162. mRecordId = MsgObj.GetMsgByName("RECORDID")
  163. mTemplate = MsgObj.GetMsgByName("TEMPLATE")
  164. mFileName = MsgObj.GetMsgByName("FILENAME")
  165. mFileType = MsgObj.GetMsgByName("FILETYPE")
  166. mUserName = MsgObj.GetMsgByName("USERNAME")
  167. 此時,mOption 就會得到 “LOADFILE”這樣的操作,既
  168. mOption = “LOADFILE”
  169. 請註意:任何操作都會得到
  170. mRecordId = MsgObj.GetMsgByName("RECORDID")
  171. mTemplate = MsgObj.GetMsgByName("TEMPLATE")
  172. mFileName = MsgObj.GetMsgByName("FILENAME")
  173. mFileType = MsgObj.GetMsgByName("FILETYPE")
  174. mUserName = MsgObj.GetMsgByName("USERNAME")
  175. 這些全局變量的值,提供給編程開發使用.
  176. LoadFile()
  177. 功能: 打開Office文檔,首先打開RecordID指定的文件
  178. 調用: WebOffice.LoadFile()
  179. 說明: Office公共,服務器應用程序操作如下:
  180. LOADFILE 調入RecordID指定的文件
  181. 操作命令
  182. 服務器應用程序操作如下
  183. WebOpen()
  184. 操作順序為:
  185. LOADFILE 調入RecordID指定的文件
  186. mOption = MsgObj.GetMsgByName("OPTION")
  187. mOption的值為“LOADFILE”
  188. 說明:
  189. 1、此函數發送此LOADFILE操作
  190. 2、系統默認對數據庫操作;
  191. 如果對數據庫操作,只要把數據庫中文檔的內容付給MsgObj.MsgFileBody就可以了,
  192. 如果想對文件進行操作,就不能使用MsgObj.MsgFileBody,只要使用MsgObj.MsgFileLoad(“文件名”)就可以把具體的服務器上的文件調入進來。
  193. 實例:
  194. IE客戶端 Javascript調用方法:
  195. function LoadDocument(){
  196. try{
  197. webform.WebOffice.LoadFile(); //打開該文檔
  198. StatusMsg(webform.WebOffice.Status);
  199. }catch(e){}
  200. }
  201. JSP服務端處理方法
  202. 如果文檔保存在服務器的數據庫中
  203. mOption=MsgObj.GetMsgByName("OPTION") ;
  204. //調用文檔
  205. if(mOption.equalsIgnoreCase("LOADFILE")){
  206. mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文檔編號
  207. //mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文檔名稱
  208. //mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文檔類型
  209. MsgObj.MsgTextClear(); //清除所有變量
  210. 通過mRecordID找到數據庫中的記錄,然後將數據庫中的文件流付給mFileBody
  211. //調入文檔
  212. if (如果讀取文件流成功){
  213. MsgObj.MsgFileBody(mFileBody); //將文件信息打包
  214. MsgObj.SetMsgByName("STATUS","打開成功!"); //設置狀態信息
  215. MsgObj.MsgError(""); //清除錯誤信息
  216. }else{
  217. MsgObj.MsgError("打開失敗!"); //設置錯誤信息
  218. }
  219. }
  220. 如果文檔保存在服務器的文件中
  221. mOption=MsgObj.GetMsgByName("OPTION") ;
  222. //調用文檔
  223. if(mOption.equalsIgnoreCase("LOADFILE")){
  224. mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文檔編號
  225. mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文檔名稱
  226. mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文檔類型
  227. MsgObj.MsgTextClear();
  228. //調入文檔
  229. if (MsgObj.MsgFileLoad(“路徑”+mFileName)) {
  230. MsgObj.SetMsgByName("STATUS","打開成功!"); //設置狀態信息
  231. MsgObj.MsgError(""); //清除錯誤信息
  232. }else{
  233. MsgObj.MsgError("打開失敗!"); //設置錯誤信息
  234. }
  235. }
  236. SaveFile()
  237. 功能: 保存Office文檔。
  238. 調用: WebOffice.SaveFile()
  239. 說明: Office公共,服務器應用程序操作如下:
  240. SAVEFILE 保存RecordID指定的文件
  241. 操作命令
  242. 服務器應用程序操作如下
  243. WebSave()
  244. SAVEFILE保存RecordID指定的文件
  245. mOption = MsgObj.GetMsgByName("OPTION")
  246. mOption的值為“SAVEFILE”
  247. 說明:
  248. 系統默認對數據庫操作;
  249. 如果對數據庫操作,只要把MsgObj.MsgFileBody的內容取出,保存到數據庫中就可以了,
  250. 如果想對文件進行操作,只要使用MsgObj.MsgFileSave(“文件名”)就可以把文件寫到服務器上
  251. 實例:
  252. IE客戶端 Javascript調用方法:
  253. function SaveDocument(){
  254. try{
  255. webform.WebOffice.SaveFile(); //保存文檔
  256. StatusMsg(webform.WebOffice.Status);
  257. }catch(e){}
  258. }
  259. JSP服務端處理方法
  260. 如果文檔保存在服務器的數據庫中
  261. mOption=MsgObj.GetMsgByName("OPTION") ;
  262. //請求保存文檔
  263. if(mOption.equalsIgnoreCase("SAVEFILE")) {
  264. mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文檔編號
  265. mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文檔名稱
  266. mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文檔類型
  267. mFileSize=MsgObj.MsgFileSize(); //取得文檔大小
  268. mFileDate=DbaObj.GetDateTime(); //取得文檔時間
  269. mFileBody=MsgObj.MsgFileBody(); //取得文檔內容
  270. mUserName= MsgObj.GetMsgByName("USERNAME"); //取得保存用戶名稱
  271. mDescript="通用版本"; //版本說明
  272. MsgObj.MsgTextClear();
  273. if (將mFileBody裏的文件流信息及其他信息保存到數據庫中) //保存文檔內容
  274. {
  275. MsgObj.SetMsgByName("STATUS", "保存成功!"); //設置狀態信息
  276. MsgObj.MsgError(""); //清除錯誤信息
  277. }else{
  278. MsgObj.MsgError("保存失敗!"); //設置錯誤信息
  279. }
  280. MsgObj.MsgFileClear();
  281. }
  282. 如果文檔保存在服務器的文件中
  283. mOption=MsgObj.GetMsgByName("OPTION") ;
  284. if(mOption.equalsIgnoreCase("SAVEFILE")) //請求保存文檔
  285. {
  286. mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文檔編號
  287. mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文檔名稱
  288. mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文檔類型
  289. mFileSize=MsgObj.MsgFileSize(); //取得文檔大小
  290. mFileDate=DbaObj.GetDateTime(); //取得文檔時間
  291. mUserName=MsgObj.GetMsgByName("USERNAME"); //取得保存用戶名稱
  292. mDescript="通用版本"; //版本說明
  293. MsgObj.MsgTextClear();
  294. 將其他信息保存到數據庫中
  295. if (MsgObj.MsgFileSave(“路徑”+mFileName)) //保存文檔
  296. {
  297. MsgObj.SetMsgByName("STATUS", "保存成功!"); //設置狀態信息
  298. MsgObj.MsgError(""); //清除錯誤信息
  299. }else{
  300. MsgObj.MsgError("保存失敗!"); //設置錯誤信息
  301. }
  302. MsgObj.MsgFileClear();
  303. }

WebOffice控件的使用(二)