版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版商業(yè)地產(chǎn)買賣合同附帶抵押權(quán)登記0023篇
- 2025年高校與企業(yè)聯(lián)合培養(yǎng)協(xié)議教授合作協(xié)議9篇
- 二零二五年度出口合同模板(含出口貨物倉(cāng)儲(chǔ)與物流服務(wù))4篇
- 2025年度裝配式建筑構(gòu)件生產(chǎn)與施工合同范本4篇
- 2025版水電安裝工程新能源并網(wǎng)服務(wù)合同集錦3篇
- 二零二五版零擔(dān)運(yùn)輸合同物流數(shù)據(jù)安全保護(hù)合同4篇
- 二零二五版路演車輛租賃與后勤保障合同4篇
- 2025年度智能家居安防與報(bào)警系統(tǒng)裝修設(shè)計(jì)合同
- 2025年度二零二五年度商業(yè)地產(chǎn)租賃轉(zhuǎn)售合作協(xié)議
- 2025年度項(xiàng)目經(jīng)理聘用合同范本-大型工程項(xiàng)目管理服務(wù)協(xié)議
- (一模)臨汾市2025年高考考前適應(yīng)性訓(xùn)練考試(一)語(yǔ)文試卷(含答案)
- 2024-2025學(xué)年滬科版數(shù)學(xué)七年級(jí)上冊(cè)期末綜合測(cè)試卷(一)(含答案)
- 2023年廣東省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 2024年公證遺產(chǎn)繼承分配協(xié)議書(shū)模板
- 燃?xì)饨?jīng)營(yíng)安全重大隱患判定標(biāo)準(zhǔn)課件
- 深圳小學(xué)英語(yǔ)單詞表(中英文)
- 護(hù)理質(zhì)量反饋內(nèi)容
- 抖音搜索用戶分析報(bào)告
- 鉆孔灌注樁技術(shù)規(guī)范
- 2023-2024學(xué)年北師大版必修二unit 5 humans and nature lesson 3 Race to the pole 教學(xué)設(shè)計(jì)
- 供貨進(jìn)度計(jì)劃
評(píng)論
0/150
提交評(píng)論