WebOffice控件的使用(一)
阿新 • • 發佈:2017-08-21
new ole 文檔 icon stat total 錯誤 action web
作者:娃娃
Java代碼
- 最近拿到一個老項目,用到了weboffice ,無奈網上找找收藏學習
- 首先需要導入jar包iweboffice.jar
- 後臺操作代碼如下:
- package weboffice;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class WebOfficeServeltAction extends HttpServlet {
- private DBstep.iMsgServer2000 MsgObj = new DBstep.iMsgServer2000(); // 創建服務對象
- public WebOfficeServeltAction() {
- super();
- }
- public void destroy() {
- super.destroy();
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doPost(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html");
- response.setCharacterEncoding("UTF-8");
- System.out.println("進來了");
- String mOption = "";
- String mUserName = "";
- String mRecordID = "";
- String mTemplate = "";
- byte[] mFileBody = null;
- String mFileName = "";
- String mFileType = "";
- String mDescript = "";
- int mFileSize = 0;
- if (request.getMethod().equalsIgnoreCase("POST")) {
- MsgObj.MsgVariant(ReadPackage(request));
- if (MsgObj.GetMsgByName("DBSTEP").equalsIgnoreCase("DBSTEP")){// 如果是合法的信息包
- mOption=MsgObj.GetMsgByName("OPTION") ; //取得操作類型
- System.out.println("操作類型==="+mOption);
- if(mOption.equalsIgnoreCase("SAVEFILE")){
- mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文檔編號
- mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文檔名稱
- mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文檔類型
- mFileSize=MsgObj.MsgFileSize(); //取得文檔大小
- mUserName= MsgObj.GetMsgByName("USERNAME"); //取得保存用戶名稱
- //此處可以解決亂碼問題
- mFileBody=MsgObj.MsgFileBody(); //取得文檔內容
- mFileBody=MsgObj.ToDocument(mFileBody);//進行分離操作
- MsgObj.MsgFileBody(mFileBody); //將分離後的文檔數據讀入組件對象
- mDescript="通用版本"; //版本說明
- MsgObj.MsgTextClear();// 清除文本信息
- //文檔信息內容保存到數據庫中或者文件中
- //以保存到文件為例
- boolean flag = MsgObj.MsgFileSave("F:/test/"+mFileName);
- if (flag){//保存文檔內容
- MsgObj.SetMsgByName("STATUS", "保存成功!"); //設置狀態信息
- MsgObj.MsgError(""); //清除錯誤信息
- }else{
- MsgObj.MsgError("保存失敗!"); //設置錯誤信息
- }
- MsgObj.MsgFileClear();
- }
- //打開
- if(mOption.equalsIgnoreCase("LOADFILE")){
- mRecordID = MsgObj.GetMsgByName("RECORDID"); // 取得文檔編號
- mFileName = MsgObj.GetMsgByName("FILENAME"); // 取得文檔名稱
- mFileType = MsgObj.GetMsgByName("FILETYPE"); // 取得文檔類型
- MsgObj.MsgTextClear(); // 清除文本信息
- //如果對數據庫操作,只要把數據庫中文檔的內容付給MsgObj.MsgFileBody就可以了
- //通過mRecordID找到數據庫中的記錄,然後將數據庫中的文件流付給mFileBody
- if (MsgObj.MsgFileLoad("F:/test/"+mFileName+mFileType)){//調入文檔
- //MsgObj.MsgFileBody(mFileBody);//從數據庫中讀取時用
- MsgObj.SetMsgByName("STATUS","打開成功!"); // 設置狀態信息
- MsgObj.MsgError(""); // 清除錯誤信息
- } else {
- MsgObj.MsgError("打開失敗!"); //打開失敗! 設置錯誤信息
- }
- }
- //修改
- if (mOption.equalsIgnoreCase("MODIFYFILE")){
- MsgObj.GetMsgByName("ATTACHID");//獲得ID
- //通過ID取得記錄及相應信息
- MsgObj.MsgTextClear(); // 清除文本信息
- if (MsgObj.MsgFileSave("F:/test/"+mFileName+mFileType)){// 保存文件此處添路徑
- MsgObj.SetMsgByName("STATUS", "保存成功!"); // 設置狀態信息 保存成功
- MsgObj.SetMsgByName("ATTACHID", "");//此處存取記錄編號
- MsgObj.MsgError(""); // 清除錯誤信息
- } else {
- MsgObj.MsgError("保存失敗!"); // 設置錯誤信息 保存失敗!
- }
- MsgObj.MsgFileClear();
- }
- }else {
- MsgObj.MsgError("數據包錯誤!");//客戶端發送數據包錯誤!
- MsgObj.MsgTextClear();
- MsgObj.MsgFileClear();
- }
- }else {
- MsgObj.MsgError("請使用POST方法");//必須使用POST方法!
- MsgObj.MsgTextClear();
- MsgObj.MsgFileClear();
- }
- SendPackage(response);
- }
- public void init() throws ServletException {
- //生成對象實例:
- MsgObj=new DBstep.iMsgServer2000();
- }
- //取得客戶端發來的數據包
- 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());
- }
- }
- }
WebOffice控件的使用(一)