![《Java讀取解決方案》word版_第1頁](http://file4.renrendoc.com/view/8c83a17b5ed3dfcb641888b03adbcfea/8c83a17b5ed3dfcb641888b03adbcfea1.gif)
![《Java讀取解決方案》word版_第2頁](http://file4.renrendoc.com/view/8c83a17b5ed3dfcb641888b03adbcfea/8c83a17b5ed3dfcb641888b03adbcfea2.gif)
![《Java讀取解決方案》word版_第3頁](http://file4.renrendoc.com/view/8c83a17b5ed3dfcb641888b03adbcfea/8c83a17b5ed3dfcb641888b03adbcfea3.gif)
![《Java讀取解決方案》word版_第4頁](http://file4.renrendoc.com/view/8c83a17b5ed3dfcb641888b03adbcfea/8c83a17b5ed3dfcb641888b03adbcfea4.gif)
![《Java讀取解決方案》word版_第5頁](http://file4.renrendoc.com/view/8c83a17b5ed3dfcb641888b03adbcfea/8c83a17b5ed3dfcb641888b03adbcfea5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Java讀取word文檔解決方案java讀取word文檔時,雖然網(wǎng)上介紹了很多插件poi、java2Word、jacob、itext等等,poi無法讀取格式(新的API估計行好像還在處于研發(fā)階段,不太穩(wěn)定,做項目不太敢用);java2Word、jacob容易報錯找不到注冊,比較詭異,我曾經(jīng)在不同的機器上試過,操作方法完全一致,有的機器不報錯,有的報錯,去他們論壇找高人解決也說不出原因,項目部署用它有點玄;itxt好像寫很方便但是我查了好久資料沒有見到過關(guān)于讀的好辦法。經(jīng)過一番選擇還是折中點采用rtf最好,畢竟rtf是開源格式,不需要借助任何插件,只需基本IO操作外加編碼轉(zhuǎn)換即可。rtf格式文件
2、表面看來和doc沒啥區(qū)別,都可以用word打開,各種格式都可以設(shè)定。- 實現(xiàn)的功能:讀取rtf模板內(nèi)容(格式和文本內(nèi)容),替換變化部分,形成新的rtf文檔。- 實現(xiàn)思路:模板中固定部分手動輸入,變化的部分用$info$表示,只需替換$info$即可。 1、采用字節(jié)的形式讀取rtf模板內(nèi)容 2、將可變的內(nèi)容字符串轉(zhuǎn)為rtf編碼 3、替換原文中的可變部分,形成新的rtf文檔主要程序如下:Java代碼/*將制定的字符串轉(zhuǎn)換為rtf編碼*/publicStringbin2hex(Stringbin)chardigital=0123456789ABCDEF.toCharArray();StringBuf
3、fersb=newStringBuffer();bytebs=bin.getBytes();intbit;for(inti=0;i4;sb.append();sb.append(digitalbit);bit=bsi&0 x0f;sb.append(digitalbit);returnsb.toString();/*字節(jié)形式讀取rtf模板內(nèi)容*/publicStringreadByteRtf(InputStreamins,Stringpath)Stringsourcecontent=;tryins=newFileInputStream(path);byteb=newbyte1024;if(in
4、s=null)ntln(源模板文件不存在);intbytesRead=0;while(true)bytesRead=ins.read(b,0,1024);/returnfinalreadbytescountsif(bytesRead=-1)/endofInputStreamSystem.out.println(讀取模板文件結(jié)束);break;sourcecontent+=newString(b,0,bytesRead);/converttostringusingbytescatch(Exceptione)e.printStackTrace(); 以上為核心代碼,剩余部分就是替換,從新組裝jav
5、a中的String.replace(oldstr,newstr);方法可以實現(xiàn),在這就不貼了。源代碼部分詳見附件。運行源代碼前提:c盤創(chuàng)建YQ目錄,將附件中模板.rtf復(fù)制到Y(jié)Q目錄之下,運行OpreatorRTF.java文件即可,就會在YQ目錄下生成文件名如:21時15分19秒_cheney_記錄.rtf 的文件。文件名是在程序中指定的呵呵。由于是由商業(yè)軟件中拆分出的demo所以只是將自己原來的寫的程序分離,合并在一個java文件中,所以有的方法在示例程序中看似多余,沒有必要那么麻煩。 對于替換部分需要循環(huán)的特例程序,我不好拆分,里面很容易暴露商業(yè)軟件的東西,所以就不貼了,有需要的話可以加
6、我QQ或者MSN,一起討論呵呵。附件傳了半天也沒有傳上去,沒有辦法只有這樣搞了呵呵。模板文件附件無法存放,需要的直接聯(lián)系呵呵。其實直接看以下的java程序部分,就會明白Java代碼/*以下部分是java源代碼*/packagecom;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStream;importjava.io.PrintWriter;importjava.text.SimpleDateForma
7、t;importjava.util.Date;publicclassOperatorRTF/*字符串轉(zhuǎn)換為rtf編碼*paramcontent*return*/publicStringstrToRtf(Stringcontent)chardigital=0123456789ABCDEF.toCharArray();StringBuffersb=newStringBuffer();bytebs=content.getBytes();intbit;for(inti=0;i4;sb.append();sb.append(digitalbit);bit=bsi&0 x0f;sb.append(digi
8、talbit);returnsb.toString();/*替換文檔的可變部分*paramcontent*paramreplacecontent*paramflag*return*/publicStringreplaceRTF(Stringcontent,Stringreplacecontent,intflag)Stringrc=strToRtf(replacecontent);Stringtarget=;/*if(flag=0)target=content.replace($time$,rc);*/if(flag=0)target=content.replace($timetop$,rc);
9、if(flag=1)target=content.replace($info$,rc);if(flag=2)target=content.replace($idea$,rc);if(flag=3)target=content.replace($advice$,rc);if(flag=4)target=content.replace($infosend$,rc);returntarget;/*獲取文件路徑*paramflag*return*/publicStringgetSavePath()Stringpath=C:YQ;FilefDirecotry=newFile(path);if(!fDir
10、ecotry.exists()fDirecotry.mkdirs();returnpath;/*半角轉(zhuǎn)為全角*/publicStringToSBC(Stringinput)charc=input.toCharArray();for(inti=0;ic.length;i+)if(ci=32)ci=(char)12288;continue;if(ci127)ci=(char)(ci+65248);returnnewString(c);publicvoidrgModel(Stringusername,Stringcontent)/TODOAuto-generatedmethodstub/*構(gòu)建生成文
11、件名targetname:12時10分23秒_username_記錄.rtf*/Datecurrent=newDate();SimpleDateFormatsdf=newjava.text.SimpleDateFormat(yyyy-MM-ddHH:mm:ss);Stringtargetname=sdf.format(current).substring(11,13)+時;targetname+=sdf.format(current).substring(14,16)+分;targetname+=sdf.format(current).substring(17,19)+秒;targetname
12、+=_+username+_記錄.rtf;/*字節(jié)形式讀取模板文件內(nèi)容,將結(jié)果轉(zhuǎn)為字符串*/Stringstrpath=getSavePath();Stringsourname=strpath+模板.rtf;Stringsourcecontent=;InputStreamins=null;tryins=newFileInputStream(sourname);byteb=newbyte1024;if(ins=null)System.out.println(源模板文件不存在);intbytesRead=0;while(true)bytesRead=ins.read(b,0,1024);/retu
13、rnfinalreadbytescountsif(bytesRead=-1)/endofInputStreamSystem.out.println(讀取模板文件結(jié)束);break;sourcecontent+=newString(b,0,bytesRead);/converttostringusingbytescatch(Exceptione)e.printStackTrace();/*修改變化部分*/Stringtargetcontent=;/*拆分之后的數(shù)組元素與模板中的標識符對應(yīng)關(guān)系*array0:timetop*array1:info*array2:idea*array3:advice
14、*array4:infosend*/Stringarray=content.split();/*2008年11月27日:更新模板之后時間無需自動填充*/*Stringnowtime=sdf.format(current).substring(0,4)+年;nowtime+=sdf.format(current).substring(5,7)+月;nowtime+=sdf.format(current).substring(8,10)+日;*/for(inti=0;iarray.length;i+)/*if(i=0)targetcontent=documentDoc.replaceRTF(sou
15、rcecontent,nowtime,i);elsetargetcontent=documentDoc.replaceRTF(targetcontent,arrayi-1,i);*/if(i=0)targetcontent=replaceRTF(sourcecontent,arrayi,i);elsetargetcontent=replaceRTF(targetcontent,arrayi,i);/*結(jié)果輸出保存到文件*/tryFileWriterfw=newFileWriter(getSavePath()+targetname,true);PrintWriterout=newPrintWriter(fw);if(targetcontent.equals()|targetcontent=)out.println(sourcecontent);elseout.println(targetcontent);out.close();fw.close();System.out.println(getSavePath()+該目錄下生成文件+targetname+成功);catch(IOExceptione)/TODOAuto-generatedcatchblocke.printSt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高端煤機裝備項目申請報告模板
- 2025年電子廚房秤項目立項申請報告
- 2025年試用策劃平臺標準協(xié)議書樣本
- 2025年公交運營協(xié)議綜合概述
- 2025年單組元肼、雙組元液體推力器項目規(guī)劃申請報告模板
- 2025年毒素類診斷抗原項目申請報告模板
- 2025年全球創(chuàng)新資源共享協(xié)議
- 2025年端子機項目提案報告
- 2025年企業(yè)臨時文員雇傭合同
- 2025年度婚紗禮服租賃策劃協(xié)議
- 創(chuàng)建動物保護家園-完整精講版課件
- 廣東省保安服務(wù)監(jiān)管信息系統(tǒng)用戶手冊(操作手冊)
- DNA 親子鑒定手冊 模板
- DB33T 1233-2021 基坑工程地下連續(xù)墻技術(shù)規(guī)程
- 天津 建設(shè)工程委托監(jiān)理合同(示范文本)
- 廣東中小學(xué)教師職稱評審申報表初稿樣表
- 部編一年級語文下冊教材分析
- 火炬及火炬氣回收系統(tǒng)操作手冊
- 北師大七年級數(shù)學(xué)下冊教學(xué)工作計劃及教學(xué)進表
- 菜肴成本核算(課堂PPT)
- 光纖通信原理課件 精品課課件 講義(全套)
評論
0/150
提交評論