word在線編輯--------dsoframer.ocx 的使用(java 代碼)

支持的瀏覽器:主要是IE瀏覽器,不支持谷歌  火狐ajax

使用條件:須要安裝微軟的WPS(最好2007及以上的)windows

操做步驟:瀏覽器

下載dsoframer.ocx 控件服務器

操做:將DSOFramer.ocx複製到C:\windows\system32目錄下,jsp

開始->運行->regsvr32 DSOFramer.ocx , 系統會提示DSOFramer.ocx中的DllRegisterServer成功this

註冊成功後就能夠使用了code

//  dsoframer.ocx 的使用 JSP部分 

 <object id="FramerControl1" name="FramerControl1" style="left: 0px; width: 80%; top: 0px; height: 1080px;"
        classid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57" codebase="dsoframer.ocx#version=2.3.0.1">
         <param name="BorderStyle" value="1">
         <param name="TitlebarColor" value="52479">
         <param name="TitlebarTextColor" value="0">
         <param name="Menubar" value="1">
         <param name="TitleBar" value="0">
 </object>
 //codebase="dsoframer.ocx#version=2.3.0.1"  這個是你的控件的版本:本身查看屬性就能夠看到
//  dsoframer.ocx 的使用jq部分打開

//得到服務器的地址
function getRootPath(){
	//獲取當前網址,如: http://localhost:8083/proj/meun.jsp  
	var curWwwPath = window.document.location.href;  
    //獲取主機地址以後的目錄,如: proj/meun.jsp  
    var pathName = window.document.location.pathname;  
    var pos = curWwwPath.indexOf(pathName);  
    //獲取主機地址,如: http://localhost:8083  
    var localhostPath = curWwwPath.substring(0, pos);  
    //獲取帶"/"的項目名,如:/proj  
    var projectName = pathName.substring(0, pathName.substr(1).indexOf('/')+1); 
    return localhostPath+projectName;
}

function getWord() {
	
	try {
	   var serverPath=this.getRootPath()+"/AffixFiles/Offices/"+fileName;
	   //根據文件服務器路徑判斷服務器文件是否存在
	   $.ajax(serverPath, {
           type: 'get',
           timeout: 1000,
           success: function() {
        	   document.all.FramerControl1.Open(serverPath, false, "Word.Document");
           },
           error: function() {
        	   document.all.FramerControl1.CreateNew("Word.Document"); 
           }
       });
   }

//  dsoframer.ocx 的使用jq部分 保存
function saveWord() {
	document.all.FramerControl1.HttpInit();
    document.all.FramerControl1.HttpAddPostCurrFile("files", fileName);
   document.all.FramerControl1.HttpPost("../../../system/printReportAction_fileUploadOffice.do");
   //這裏參數是你的action的地址
   
}

//JAVA   ACTTION  部分(action的配置我就不詳細說了)
	// 用戶上傳的文件 這裏名字需document.all.FramerControl1.HttpAddPostCurrFile("files", fileName);
  裏面的第一參數相同
        private File[]   files; 
// filesFileName  必須是前面files是與上面相同fileName是固定的		 
  		private String[] filesFileName; 	// 上傳文件的文件名
  		private String[] filesContentType;	// 上傳文件的類型
  		/**
  		 * fileUploadOffice Office文件在線保存
  		 */
  		public void fileUploadOffice(){
  			//判斷是否有文件上傳
  			if(getWriter() == false)			return;	
  			String exescmd = request.getParameter("execscmd");
  			String sSavePath = request.getRealPath("/AffixFiles\\Offices") + "/".replace("\\", "/");
  			FileUploadServer.fileUploadOffice(getFiles(),getFilesFileName(),sSavePath,
  					exescmd);
  			/*try {
				out=response.getWriter();
				out.write(outStr);
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
				out.close();
			}*/
  			
  			
  		}
  		/*屬性的getter和setter辦法 */
  		public File[] getFiles() {
			return files;
		}
		public void setFiles(File[] files) {
			this.files = files;
		}
		public String[] getFilesFileName() {
			return filesFileName;
		}
		public void setFilesFileName(String[] filesFileName) {
			this.filesFileName = filesFileName;
		}
		public String[] getFilesContentType() {
			return filesContentType;
		}
		public void setFilesContentType(String[] filesContentType) {
			this.filesContentType = filesContentType;
		}

我在搞這個的時候主要遇到兩個問題:一個是無法保存到服務器(沒有跳轉到action)能夠保存到本地:我當時是由於使用的是WPS2003換成2010的就支持了,第二個是文件沒傳過去,緣由主要是由於orm

// 用戶上傳的文件 這裏名字需document.all.FramerControl1.HttpAddPostCurrFile("files", fileName);
  裏面的第一參數相同
        private File[]   files; 
// filesFileName  必須是前面files是與上面相同fileName是固定的server

 

這兩個參數對應問題的問題get

這個方法document.all.FramerControl1.HttpAddPostCurrFile("files", fileName);  其實就是模擬一個form表單 裏面有個<input name="files" type="file"/>

相關文章
相關標籤/搜索