XWPFDocument創(chuàng)建和讀取OfficeWord文檔基礎(chǔ)篇(一)_第1頁(yè)
XWPFDocument創(chuàng)建和讀取OfficeWord文檔基礎(chǔ)篇(一)_第2頁(yè)
XWPFDocument創(chuàng)建和讀取OfficeWord文檔基礎(chǔ)篇(一)_第3頁(yè)
XWPFDocument創(chuàng)建和讀取OfficeWord文檔基礎(chǔ)篇(一)_第4頁(yè)
XWPFDocument創(chuàng)建和讀取OfficeWord文檔基礎(chǔ)篇(一)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

XWPFDocument創(chuàng)建和讀取OfficeWord?檔基礎(chǔ)篇(?)建議?家使?officeword來(lái)創(chuàng)建?檔。(wps和word結(jié)構(gòu)有些不?樣)IBodyElement-------------------迭代器(段落和表格)XWPFComment-------------------評(píng)論(個(gè)?理解應(yīng)該是批注)XWPFSDTXWPFFooter-------------------頁(yè)腳XWPFFootnotes-------------------腳注XWPFHeader-------------------頁(yè)眉XWPFHyperlink-------------------超鏈接X(jué)WPFNumbering-------------------編號(hào)(我也不知是啥...)XWPFParagraph-------------------段落XWPFPictureData-------------------圖?XWPFStyles-------------------樣式(設(shè)置多級(jí)標(biāo)題的時(shí)候?)XWPFTable-------------------表格1、正?段落?個(gè)?檔包含多個(gè)段落,?個(gè)段落包含多個(gè)Runs,?個(gè)Runs包含多個(gè)Run,Run是?檔的最?單元獲取所有段落:List<XWPFParagraph>paragraphs=word.getParagraphs();獲取?個(gè)段落中的所有Runs:List<XWPFRun>xwpfRuns=xwpfParagraph.getRuns();獲取?個(gè)Runs中的?個(gè)Run:XWPFRunrun=xwpfRuns.get(index);XWPFRun--代表具有相同屬性的?段?本2、正?表格?個(gè)?檔包含多個(gè)表格,?個(gè)表格包含多?,??包含多列(格),每?格的內(nèi)容相當(dāng)于?個(gè)完整的?檔獲取所有表格:List<XWPFTable>xwpfTables=doc.getTables();獲取?個(gè)表格中的所有?:List<XWPFTableRow>xwpfTableRows=xwpfTable.getRows();獲取??中的所有列:List<XWPFTableCell>xwpfTableCells=xwpfTableRow.getTableCells();獲取?格?的內(nèi)容:List<XWPFParagraph>paragraphs=xwpfTableCell.getParagraphs();之后和正?段落?樣注:1.表格的?格相當(dāng)于?個(gè)完整的docx?檔,只是沒(méi)有頁(yè)眉和頁(yè)腳。??可以有表格,使?xwpfTableCell.getTables()獲取,andsoon2.在poi?檔中段落和表格是完全分開(kāi)的,如果在兩個(gè)段落中有?個(gè)表格,在poi中是沒(méi)辦法確定表格在段落中間的。(當(dāng)然除?你本來(lái)知道了,這句是廢話)。只有?檔的格式固定,才能正確的得到?檔的結(jié)構(gòu)個(gè)?理解:我不能確定表格所處的位置(第?個(gè)段落后?,還是第?個(gè)段落后?...)3、頁(yè)眉:?個(gè)?檔可以有多個(gè)頁(yè)眉,頁(yè)眉??可以包含段落和表格獲取?檔的頁(yè)眉:List<XWPFHeader>headerList=doc.getHeaderList();獲取頁(yè)眉?的所有段落:List<XWPFParagraph>paras=header.getParagraphs();獲取頁(yè)眉?的所有表格:List<XWPFTable>tables=header.getTables();之后就?樣了4、頁(yè)腳:頁(yè)腳和頁(yè)眉基本類似,可以獲取表?頁(yè)數(shù)的?標(biāo)?歸正傳-------?貨:1、通過(guò)XWPFDocument讀:段落+表格a、獲取?檔的所有段落InputStreamis=newFileInputStream("D:\\table.docx");XWPFDocumentdoc=newXWPFDocument(is);List<XWPFParagraph>paras=doc.getParagraphs();獲取段落內(nèi)容for(XWPFParagraphpara:paras){//當(dāng)前段落的屬性//CTPPrpr=para.getCTP().getPPr();System.out.println(para.getText());}b、獲取?檔中所有的表格List<XWPFTable>tables=doc.getTables();List<XWPFTableRow>rows;List<XWPFTableCell>cells;for(XWPFTabletable:tables){//表格屬性CTTblPrpr=table.getCTTbl().getTblPr();//獲取表格對(duì)應(yīng)的?rows=table.getRows();for(XWPFTableRowrow:rows){//獲取?對(duì)應(yīng)的單元格cells=row.getTableCells();for(XWPFTableCellcell:cells){System.out.println(cell.getText());;}}}2、XWPFDocument?成word直接new?個(gè)空的XWPFDocument,之后再往這個(gè)XWPFDocument??填充內(nèi)容,然后再把它寫?到對(duì)應(yīng)的輸出流中。新建?個(gè)?檔XWPFDocumentdoc=newXWPFDocument();//創(chuàng)建?個(gè)段落XWPFParagraphpara=doc.createParagraph();//?個(gè)XWPFRun代表具有相同屬性的?個(gè)區(qū)域:?段?本XWPFRunrun=para.createRun();run.setBold(true);//加粗run.setText("加粗的內(nèi)容");run=para.createRun();run.setColor("FF0000");run.setText("紅?的字。");OutputStreamos=newFileOutputStream("D:\\simpleWrite.docx");//把doc輸出到輸出流doc.write(os);this.close(os);新建?個(gè)表格//XWPFDocumentdoc=newXWPFDocument();//創(chuàng)建?個(gè)5?5列的表格XWPFTabletable=doc.createTable(5,5);//這?增加的列原本初始化創(chuàng)建的那5?在通過(guò)getTableCells()?法獲取時(shí)獲取不到,但通過(guò)row新增的就可以。//table.addNewCol();//給表格增加?列,變成6列table.createRow();//給表格新增??,變成6?List<XWPFTableRow>rows=table.getRows();//表格屬性CTTblPrtablePr=table.getCTTbl().addNewTblPr();//表格寬度CTTblWidthwidth=tablePr.addNewTblW();width.setW(BigInteger.valueOf(8000));XWPFTableRowrow;List<XWPFTableCell>cells;XWPFTableCellcell;introwSize=rows.size();intcellSize;for(inti=0;i<rowSize;i++){row=rows.get(i);//新增單元格row.addNewTableCell();//設(shè)置?的?度row.setHeight(500);//?屬性//CTTrPrrowPr=row.getCtRow().addNewTrPr();//這種?式是可以獲取到新增的cell的。//List<CTTc>list=row.getCtRow().getTcList();cells=row.getTableCells();cellSize=cells.size();for(intj=0;j<cellSize;j++){cell=cells.get(j);if((i+j)%2==0){//設(shè)置單元格的顏?cell.setColor("ff0000");//紅?}else{cell.setColor("0000ff");//藍(lán)?}//單元格屬性CTTcPrcellPr=cell.getCTTc().addNewTcPr();cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);if(j==3){//設(shè)置寬度cellPr.addNewTcW().setW(BigInteger.valueOf(3000));}cell.setText(i+","+j);}}//?件不存在時(shí)會(huì)?動(dòng)創(chuàng)建OutputStreamos=newFileOutputStream("D:\\table.docx");//寫??件doc.write(os);this.close(os);段落內(nèi)容替換/***替換段落??的變量*@parampara要替換的段落*@paramparams參數(shù)*/privatevoidreplaceInPara(XWPFParagraphpara,Map<String,Object>params){List<XWPFRun>runs;Matchermatcher;if(this.matcher(para.getParagraphText()).find()){runs=para.getRuns();for(inti=0;i<runs.size();i++){XWPFRunrun=runs.get(i);StringrunText=run.toString();matcher=this.matcher(runText);if(matcher.find()){while((matcher=this.matcher(runText)).find()){runText=matcher.replaceFirst(String.valueOf(params.get(matcher.group(1))));}//直接調(diào)?XWPFRun的setText()?法設(shè)置?本時(shí),在底層會(huì)重新創(chuàng)建?個(gè)XWPFRun,把?本附加在當(dāng)前?本后?,//所以我們不能直接設(shè)值,需要先刪除當(dāng)前run,然后再???動(dòng)插??個(gè)新的run。para.removeRun(i);para.insertNewRun(i).setText(runText);}}}}直接調(diào)?XWPFRun的setText()?法設(shè)置?本時(shí),在底層會(huì)重新創(chuàng)建?個(gè)XWPFRun,把?本附加在當(dāng)前?本后?,所以我們不能直接設(shè)值,需要先刪除當(dāng)前run,然后再???動(dòng)插??個(gè)新的run。//抽取worddocx?件中的圖?Stringpath="D://abc.docx";Filefile=newFile(path);try{FileInputStreamfis=newFileInputStream(file);XWPFDocumentdocument=newXWPFDocument(fis);XWPFWordExtractorxwpfWordExtractor=newXWPFWordExtractor(document);Stringtext=xwpfWordExtractor.getText();System.out.println(text);List<XWPFPictureData>picList=document.getAllPictures();for(XWPFPictureDatapic:picList){System.out.println(pic.getPictureType()+file.separator+pic.suggestFileExtension()+file.separator+pic.getFileName());byte[]bytev=pic.getData();FileOutputStreamfos=newFileOutputStream("D:\\abc\\docxImage\\"+pic.getFileName());fos.write(bytev);}fis.close();}catch(IOExceptione){e.printStackTrace();}}多級(jí)標(biāo)題結(jié)構(gòu)/***?定義樣式?式寫word,參考statckoverflow的源碼**@throwsIOException*/publicstaticvoidwriteSimpleDocxFile()throwsIOException{publicstaticvoidwriteSimpleDocxFile()throwsIOException{XWPFDocumentdocxDocument=newXWPFDocument();//?外?定義了?個(gè)名字,中?版的最好還是按照word給的標(biāo)題名來(lái),否則級(jí)別上可能會(huì)亂addCustomHeadingStyle(docxDocument,"標(biāo)題1",1);addCustomHeadingStyle(docxDocument,"標(biāo)題2",2);//標(biāo)題1XWPFParagraphparagraph=docxDocument.createParagraph();XWPFRunrun=paragraph.createRun();run.setText("標(biāo)題1");paragraph.setStyle("標(biāo)題1");//標(biāo)題2XWPFParagraphparagraph2=docxDocument.createParagraph();XWPFRunrun2=paragraph2.createRun();run2.setText("標(biāo)題2");paragraph2.setStyle("標(biāo)題2");//正?XWPFParagraphparagraphX=docxDocument.createParagraph();XWPFRunrunX=paragraphX.createRun();runX.setText("正?");//word寫?到?件FileOutputStreamfos=newFileOutputStream("D:/myDoc2.docx");docxDocument.write(fos);fos.close();}/***增加?定義標(biāo)題樣式。這??的是stackoverflow的源碼**@paramdocxDocument?標(biāo)?檔*@paramstrStyleId樣式名稱*@paramheadingLevel樣式級(jí)別*/privatestaticvoidaddCustomHeadingStyle(XWPFDocumentdocxDocument,StringstrStyleId,intheadingLevel){CTStylectStyle=CTStyle.Factory.newInstance();ctStyle.setStyleId(strStyleId);CTStringstyleName=CTString.Factory.newInstance();styleName.setVal(strStyleId);ctStyle.set

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論