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

WebOffice控件的使用(一)

new ole 文檔 icon stat total 錯誤 action web

作者:娃娃

Java代碼 技術分享

  1. 最近拿到一個老項目,用到了weboffice ,無奈網上找找收藏學習
  2. 首先需要導入jar包iweboffice.jar
  3. 後臺操作代碼如下:
Java代碼 技術分享
  1. package weboffice;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.ServletOutputStream;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. public class WebOfficeServeltAction extends HttpServlet {
  9. private DBstep.iMsgServer2000 MsgObj = new DBstep.iMsgServer2000(); // 創建服務對象
  10. public WebOfficeServeltAction() {
  11. super();
  12. }
  13. public void destroy() {
  14. super.destroy();
  15. }
  16. public void doGet(HttpServletRequest request, HttpServletResponse response)
  17. throws ServletException, IOException {
  18. this.doPost(request, response);
  19. }
  20. public void doPost(HttpServletRequest request, HttpServletResponse response)
  21. throws ServletException, IOException {
  22. response.setContentType("text/html");
  23. response.setCharacterEncoding("UTF-8");
  24. System.out.println("進來了");
  25. String mOption = "";
  26. String mUserName = "";
  27. String mRecordID = "";
  28. String mTemplate = "";
  29. byte[] mFileBody = null;
  30. String mFileName = "";
  31. String mFileType = "";
  32. String mDescript = "";
  33. int mFileSize = 0;
  34. if (request.getMethod().equalsIgnoreCase("POST")) {
  35. MsgObj.MsgVariant(ReadPackage(request));
  36. if (MsgObj.GetMsgByName("DBSTEP").equalsIgnoreCase("DBSTEP")){// 如果是合法的信息包
  37. mOption=MsgObj.GetMsgByName("OPTION") ; //取得操作類型
  38. System.out.println("操作類型==="+mOption);
  39. if(mOption.equalsIgnoreCase("SAVEFILE")){
  40. mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文檔編號
  41. mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文檔名稱
  42. mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文檔類型
  43. mFileSize=MsgObj.MsgFileSize(); //取得文檔大小
  44. mUserName= MsgObj.GetMsgByName("USERNAME"); //取得保存用戶名稱
  45. //此處可以解決亂碼問題
  46. mFileBody=MsgObj.MsgFileBody(); //取得文檔內容
  47. mFileBody=MsgObj.ToDocument(mFileBody);//進行分離操作
  48. MsgObj.MsgFileBody(mFileBody); //將分離後的文檔數據讀入組件對象
  49. mDescript="通用版本"; //版本說明
  50. MsgObj.MsgTextClear();// 清除文本信息
  51. //文檔信息內容保存到數據庫中或者文件中
  52. //以保存到文件為例
  53. boolean flag = MsgObj.MsgFileSave("F:/test/"+mFileName);
  54. if (flag){//保存文檔內容
  55. MsgObj.SetMsgByName("STATUS", "保存成功!"); //設置狀態信息
  56. MsgObj.MsgError(""); //清除錯誤信息
  57. }else{
  58. MsgObj.MsgError("保存失敗!"); //設置錯誤信息
  59. }
  60. MsgObj.MsgFileClear();
  61. }
  62. //打開
  63. if(mOption.equalsIgnoreCase("LOADFILE")){
  64. mRecordID = MsgObj.GetMsgByName("RECORDID"); // 取得文檔編號
  65. mFileName = MsgObj.GetMsgByName("FILENAME"); // 取得文檔名稱
  66. mFileType = MsgObj.GetMsgByName("FILETYPE"); // 取得文檔類型
  67. MsgObj.MsgTextClear(); // 清除文本信息
  68. //如果對數據庫操作,只要把數據庫中文檔的內容付給MsgObj.MsgFileBody就可以了
  69. //通過mRecordID找到數據庫中的記錄,然後將數據庫中的文件流付給mFileBody
  70. if (MsgObj.MsgFileLoad("F:/test/"+mFileName+mFileType)){//調入文檔
  71. //MsgObj.MsgFileBody(mFileBody);//從數據庫中讀取時用
  72. MsgObj.SetMsgByName("STATUS","打開成功!"); // 設置狀態信息
  73. MsgObj.MsgError(""); // 清除錯誤信息
  74. } else {
  75. MsgObj.MsgError("打開失敗!"); //打開失敗! 設置錯誤信息
  76. }
  77. }
  78. //修改
  79. if (mOption.equalsIgnoreCase("MODIFYFILE")){
  80. MsgObj.GetMsgByName("ATTACHID");//獲得ID
  81. //通過ID取得記錄及相應信息
  82. MsgObj.MsgTextClear(); // 清除文本信息
  83. if (MsgObj.MsgFileSave("F:/test/"+mFileName+mFileType)){// 保存文件此處添路徑
  84. MsgObj.SetMsgByName("STATUS", "保存成功!"); // 設置狀態信息 保存成功
  85. MsgObj.SetMsgByName("ATTACHID", "");//此處存取記錄編號
  86. MsgObj.MsgError(""); // 清除錯誤信息
  87. } else {
  88. MsgObj.MsgError("保存失敗!"); // 設置錯誤信息 保存失敗!
  89. }
  90. MsgObj.MsgFileClear();
  91. }
  92. }else {
  93. MsgObj.MsgError("數據包錯誤!");//客戶端發送數據包錯誤!
  94. MsgObj.MsgTextClear();
  95. MsgObj.MsgFileClear();
  96. }
  97. }else {
  98. MsgObj.MsgError("請使用POST方法");//必須使用POST方法!
  99. MsgObj.MsgTextClear();
  100. MsgObj.MsgFileClear();
  101. }
  102. SendPackage(response);
  103. }
  104. public void init() throws ServletException {
  105. //生成對象實例:
  106. MsgObj=new DBstep.iMsgServer2000();
  107. }
  108. //取得客戶端發來的數據包
  109. private byte[] ReadPackage(HttpServletRequest request){
  110. byte mStream[]=null;
  111. int totalRead = 0;
  112. int readBytes = 0;
  113. int totalBytes = 0;
  114. try{
  115. totalBytes = request.getContentLength();
  116. mStream = new byte[totalBytes];
  117. while(totalRead < totalBytes){
  118. request.getInputStream();
  119. readBytes = request.getInputStream().read(mStream, totalRead, totalBytes - totalRead);
  120. totalRead += readBytes;
  121. continue;
  122. }
  123. }
  124. catch (Exception e){
  125. System.out.println(e.toString());
  126. }
  127. return (mStream);
  128. }
  129. //發送處理後的數據包
  130. private void SendPackage(HttpServletResponse response){
  131. try{
  132. ServletOutputStream OutBinarry=response.getOutputStream() ;
  133. OutBinarry.write(MsgObj.MsgVariant()) ;
  134. OutBinarry.flush();
  135. OutBinarry.close();
  136. }
  137. catch(Exception e){
  138. System.out.println(e.toString());
  139. }
  140. }
  141. }

WebOffice控件的使用(一)