Java如何基于poi操作Wold工具類
Apache封裝的POI組件對Excel,Wold的操作已經(jīng)非常的豐富了,在項目上也會經(jīng)常用到一些POI的基本操作
這里就簡單的闡述POI操作Wold的基本工具類,代碼還是有點粗造的,但是不影響使用。
這個類包含了一些對文本進(jìn)行換行,加粗,傾斜,字體顏色,大小,首行縮進(jìn),添加邊框等方法。分享給大家學(xué)習(xí)下:
- Apache POI的組件:
- ApachePOI包含用于處理MS-Office的所有OLE2復(fù)合文檔的類和方法。該API的組件列表如下 -
- POIFS(不良混淆實現(xiàn)文件系統(tǒng)) - 此組件是所有其他POI元素的基本因素。它用于顯式讀取不同的文件。
- HSSF(可怕的SpreadSheet格式) - 用于讀取和寫入.xls格式的MS-Excel文件。
- XSSF(XML SpreadSheet格式) - 用于MS-Excel的.xlsx文件格式。
- HPSF(可怕的屬性集格式) - 用于提取MS-Office文件的屬性集。
- HWPF(可怕的字處理器格式) - 用于讀寫MS-Word的.doc擴展文件。
- XWPF(XML字處理器格式) - 用于讀寫MS-Word的.docx擴展文件。
- HSLF(可怕的幻燈片布局格式) - 用于閱讀,創(chuàng)建和編輯PowerPoint演示文稿。
- HDGF(可怕的DiaGram格式) - 它包含MS-Visio二進(jìn)制文件的類和方法。
- HPBF(可怕的PuBlisher格式) - 用于讀寫MS-Publisher文件。
下面就獻(xiàn)上代碼:
首先我們引入需要的第三方j(luò)ar包
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency>
工具類具體代碼:
package com.herbert.test; import org.apache.poi.xwpf.usermodel.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created by Herbert on 2019/1/22. */ public class WoldUtil { private static XWPFDocument document = null; private static XWPFParagraph paragraph = null; /** * 初始化創(chuàng)建Word文件 */ public WoldUtil(){ document = new XWPFDocument(); } /** * 創(chuàng)建一個段落 * @param position 段落位置 * 0:居左 * 1:居中 * 2:居右 */ public void createParagraph(Integer position){ paragraph = document.createParagraph(); switch (position){ case 0: paragraph.setAlignment(ParagraphAlignment.LEFT); break; case 1: paragraph.setAlignment(ParagraphAlignment.CENTER); break; case 2: paragraph.setAlignment(ParagraphAlignment.RIGHT); break; default: paragraph.setAlignment(ParagraphAlignment.LEFT); break; } } /** * 單線邊框 */ public void createBorder(){ paragraph.setBorderTop(Borders.THICK);//設(shè)置上邊框 paragraph.setBorderBottom(Borders.THICK);//設(shè)置下邊框 paragraph.setBorderLeft(Borders.THICK);//設(shè)置左邊框 paragraph.setBorderRight(Borders.THICK);//設(shè)置右邊框 } /** * 雙線邊框 */ public void createBorderDouble(){ paragraph.setBorderTop(Borders.DOUBLE);//設(shè)置上邊框 paragraph.setBorderBottom(Borders.DOUBLE);//設(shè)置下邊框 paragraph.setBorderLeft(Borders.DOUBLE);//設(shè)置左邊框 paragraph.setBorderRight(Borders.DOUBLE);//設(shè)置右邊框 } /** * 首行縮進(jìn) * @param indentation */ public void addTextIndent(Integer indentation){ paragraph.setIndentationFirstLine(indentation); } /** * 創(chuàng)建文本信息 * @param text 文本信息 * @param bold 是否加粗 true為加粗 * @param italic 是否傾斜 true為傾斜 * @param color 顏色碼 * @param fontSize 字體大小 * @param fontFamily 設(shè)置字體 */ public void createRun(String text, Boolean bold,Boolean italic, String color,Integer fontSize,String fontFamily){ XWPFRun r = paragraph.createRun();//創(chuàng)建段落文本 r.setText(text); r.setBold(bold);//設(shè)置為粗體 true 為粗體 r.setItalic(italic);//設(shè)置為傾斜 true 為粗體 r.setColor(color);//設(shè)置顏色 r.setFontSize(fontSize); CTRPr rpr = r.getCTR().isSetRPr() ? r.getCTR().getRPr() : r.getCTR().addNewRPr(); CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts(); fonts.setAscii(fontFamily); fonts.setEastAsia(fontFamily); fonts.setHAnsi(fontFamily); } /** * 寫到磁盤 * @param path */ public void write(String path){ try{ FileOutputStream out = new FileOutputStream(path); document.write(out); out.close(); }catch (IOException e){ e.printStackTrace(); System.out.println("文件出現(xiàn)錯誤"); } } /** * 創(chuàng)建空行 * @param counts 空行個數(shù) */ public void createEmpty(Integer counts){ for(int i =0;i<counts;i++){ XWPFParagraph empty = document.createParagraph(); XWPFRun e = empty.createRun(); e.setText(" "); } } /** * 查詢wold中的數(shù)據(jù) 返回List 集合 * @param path wold所在的地址 * @return */ public List<String> query(String path){ List<String> list = new ArrayList<String>(); try{ FileInputStream stream = new FileInputStream(path); XWPFDocument doc = new XWPFDocument(stream);// 創(chuàng)建Word文件 for(XWPFParagraph p : doc.getParagraphs()){//遍歷段落 System.out.println(p.getParagraphText()); list.add(p.getParagraphText()); } }catch (Exception e){ e.printStackTrace(); } return list; } public static void main(String args[]) throws Exception { WoldUtil woldUtil = new WoldUtil(); woldUtil.createParagraph(1); woldUtil.createBorder(); woldUtil.createRun("(標(biāo)題居中)Apache POI的組件", true, false,"000000",17,FontFamily.BLACKBODY); woldUtil.createBorderDouble(); woldUtil.createParagraph(0); woldUtil.createRun("(邊框)Apache POI包含用于處理MS-Office的所有OLE2復(fù)合文檔的類和方法。該API的組件列表如下:", false,true, "4682B4",15,FontFamily.CHINESE_FINE_BLACK); woldUtil.createEmpty(3); woldUtil.createParagraph(0); woldUtil.addTextIndent(600); woldUtil.createRun("(首行縮進(jìn))• POIFS(不良混淆實現(xiàn)文件系統(tǒng)) - 此組件是所有其他POI元素的基本因素。它用于顯式讀取不同的文件", true,false,"A0522D",13,FontFamily.MICROSOFT_YAHEI); woldUtil.createEmpty(1); woldUtil.createParagraph(0); woldUtil.createRun("•HWPF(可怕的字處理器格式) - 用于讀寫MS-Word的.doc擴展文件。", true,false,"eeff00",13,FontFamily.MICROSOFT_YAHEI); woldUtil.write("E:\\herbert\\sample.doc"); List<String> list =woldUtil.query("E:\\herbert\\sample.doc"); System.out.println("list=====>>>>>>>> "+list.toString()); } }
測試截圖
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis自動生成時如何設(shè)置不生成Example類詳解
這篇文章主要給大家介紹了關(guān)于mybatis自動生成時如何設(shè)置不生成Example類的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05Springboot整個Quartz實現(xiàn)動態(tài)定時任務(wù)的示例代碼
這篇文章主要介紹了Springboot整個Quartz實現(xiàn)動態(tài)定時任務(wù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09Java Map簡介_動力節(jié)點Java學(xué)院整理
Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關(guān)系集的形式查看某個映射的內(nèi)容。本文是動力節(jié)點java學(xué)院給大家整理的java map知識,需要的的朋友參考下吧2017-05-05