![《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),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java讀取word文檔解決方案java讀取word文檔時(shí),雖然網(wǎng)上介紹了很多插件poi、java2Word、jacob、itext等等,poi無法讀取格式(新的API估計(jì)行好像還在處于研發(fā)階段,不太穩(wěn)定,做項(xiàng)目不太敢用);java2Word、jacob容易報(bào)錯(cuò)找不到注冊,比較詭異,我曾經(jīng)在不同的機(jī)器上試過,操作方法完全一致,有的機(jī)器不報(bào)錯(cuò),有的報(bào)錯(cuò),去他們論壇找高人解決也說不出原因,項(xiàng)目部署用它有點(diǎn)玄;itxt好像寫很方便但是我查了好久資料沒有見到過關(guān)于讀的好辦法。經(jīng)過一番選擇還是折中點(diǎn)采用rtf最好,畢竟rtf是開源格式,不需要借助任何插件,只需基本IO操作外加編碼轉(zhuǎn)換即可。rtf格式文件
2、表面看來和doc沒啥區(qū)別,都可以用word打開,各種格式都可以設(shè)定。- 實(shí)現(xiàn)的功能:讀取rtf模板內(nèi)容(格式和文本內(nèi)容),替換變化部分,形成新的rtf文檔。- 實(shí)現(xiàn)思路:模板中固定部分手動(dòng)輸入,變化的部分用$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);方法可以實(shí)現(xiàn),在這就不貼了。源代碼部分詳見附件。運(yùn)行源代碼前提:c盤創(chuàng)建YQ目錄,將附件中模板.rtf復(fù)制到Y(jié)Q目錄之下,運(yùn)行OpreatorRTF.java文件即可,就會在YQ目錄下生成文件名如:21時(shí)15分19秒_cheney_記錄.rtf 的文件。文件名是在程序中指定的呵呵。由于是由商業(yè)軟件中拆分出的demo所以只是將自己原來的寫的程序分離,合并在一個(gè)java文件中,所以有的方法在示例程序中看似多余,沒有必要那么麻煩。 對于替換部分需要循環(huán)的特例程序,我不好拆分,里面很容易暴露商業(yè)軟件的東西,所以就不貼了,有需要的話可以加
6、我QQ或者M(jìn)SN,一起討論呵呵。附件傳了半天也沒有傳上去,沒有辦法只有這樣搞了呵呵。模板文件附件無法存放,需要的直接聯(lián)系呵呵。其實(shí)直接看以下的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時(shí)10分23秒_username_記錄.rtf*/Datecurrent=newDate();SimpleDateFormatsdf=newjava.text.SimpleDateFormat(yyyy-MM-ddHH:mm:ss);Stringtargetname=sdf.format(current).substring(11,13)+時(shí);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ù)組元素與模板中的標(biāo)識符對應(yīng)關(guān)系*array0:timetop*array1:info*array2:idea*array3:advice
14、*array4:infosend*/Stringarray=content.split();/*2008年11月27日:更新模板之后時(shí)間無需自動(dòng)填充*/*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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能物流配送系統(tǒng)建設(shè)與運(yùn)營合同
- 2025年度合同管理系統(tǒng)與供應(yīng)鏈管理融合合同
- 2025年度酒店客房用品國際采購合同
- 2025年度私募股權(quán)投資基金股權(quán)轉(zhuǎn)讓及投資合同
- 2025年度旅游線路宣傳合同海報(bào)設(shè)計(jì)及推廣服務(wù)
- 2025年度工程項(xiàng)目國際慣例與本土實(shí)踐結(jié)合合同
- 2025年度供應(yīng)商保密協(xié)議:涉及人工智能算法的保密合同
- 2025年度股東向公司借款合同附件及補(bǔ)充材料清單
- 2025年度工業(yè)園區(qū)物業(yè)能源審計(jì)與優(yōu)化合同
- 2025年度國際農(nóng)業(yè)技術(shù)培訓(xùn)與推廣合同
- 醫(yī)院課件:《食源性疾病知識培訓(xùn)》
- 浙教版七年級數(shù)學(xué)下冊單元測試題及參考答案
- 華為人才發(fā)展與運(yùn)營管理
- 卓有成效的管理者讀后感3000字
- 七年級下冊-備戰(zhàn)2024年中考?xì)v史總復(fù)習(xí)核心考點(diǎn)與重難點(diǎn)練習(xí)(統(tǒng)部編版)
- 巖土工程勘察服務(wù)投標(biāo)方案(技術(shù)方案)
- 實(shí)驗(yàn)室儀器設(shè)備驗(yàn)收單
- 新修訂藥品GMP中藥飲片附錄解讀課件
- 蒙特利爾認(rèn)知評估量表北京版
- 領(lǐng)導(dǎo)干部個(gè)人有關(guān)事項(xiàng)報(bào)告表(模板)
- GB/T 7631.18-2017潤滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應(yīng)用)
評論
0/150
提交評論