Java如何基于poi操作Wold工具類(lèi)
Apache封裝的POI組件對(duì)Excel,Wold的操作已經(jīng)非常的豐富了,在項(xiàng)目上也會(huì)經(jīng)常用到一些POI的基本操作
這里就簡(jiǎn)單的闡述POI操作Wold的基本工具類(lèi),代碼還是有點(diǎn)粗造的,但是不影響使用。
這個(gè)類(lèi)包含了一些對(duì)文本進(jìn)行換行,加粗,傾斜,字體顏色,大小,首行縮進(jìn),添加邊框等方法。分享給大家學(xué)習(xí)下:
- Apache POI的組件:
- ApachePOI包含用于處理MS-Office的所有OLE2復(fù)合文檔的類(lèi)和方法。該API的組件列表如下 -
- POIFS(不良混淆實(shí)現(xiàn)文件系統(tǒng)) - 此組件是所有其他POI元素的基本因素。它用于顯式讀取不同的文件。
- HSSF(可怕的SpreadSheet格式) - 用于讀取和寫(xiě)入.xls格式的MS-Excel文件。
- XSSF(XML SpreadSheet格式) - 用于MS-Excel的.xlsx文件格式。
- HPSF(可怕的屬性集格式) - 用于提取MS-Office文件的屬性集。
- HWPF(可怕的字處理器格式) - 用于讀寫(xiě)MS-Word的.doc擴(kuò)展文件。
- XWPF(XML字處理器格式) - 用于讀寫(xiě)MS-Word的.docx擴(kuò)展文件。
- HSLF(可怕的幻燈片布局格式) - 用于閱讀,創(chuàng)建和編輯PowerPoint演示文稿。
- HDGF(可怕的DiaGram格式) - 它包含MS-Visio二進(jìn)制文件的類(lèi)和方法。
- HPBF(可怕的PuBlisher格式) - 用于讀寫(xiě)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>
工具類(lèi)具體代碼:
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)建一個(gè)段落
* @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);
}
/**
* 寫(xiě)到磁盤(pán)
* @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)錯(cuò)誤");
}
}
/**
* 創(chuàng)建空行
* @param counts 空行個(gè)數(shù)
*/
public void createEmpty(Integer counts){
for(int i =0;i<counts;i++){
XWPFParagraph empty = document.createParagraph();
XWPFRun e = empty.createRun();
e.setText(" ");
}
}
/**
* 查詢(xún)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ù)合文檔的類(lèi)和方法。該API的組件列表如下:", false,true, "4682B4",15,FontFamily.CHINESE_FINE_BLACK);
woldUtil.createEmpty(3);
woldUtil.createParagraph(0);
woldUtil.addTextIndent(600);
woldUtil.createRun("(首行縮進(jìn))• POIFS(不良混淆實(shí)現(xiàn)文件系統(tǒng)) - 此組件是所有其他POI元素的基本因素。它用于顯式讀取不同的文件", true,false,"A0522D",13,FontFamily.MICROSOFT_YAHEI);
woldUtil.createEmpty(1);
woldUtil.createParagraph(0);
woldUtil.createRun("•HWPF(可怕的字處理器格式) - 用于讀寫(xiě)MS-Word的.doc擴(kuò)展文件。", 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());
}
}
測(cè)試截圖

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis自動(dòng)生成時(shí)如何設(shè)置不生成Example類(lèi)詳解
這篇文章主要給大家介紹了關(guān)于mybatis自動(dòng)生成時(shí)如何設(shè)置不生成Example類(lèi)的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
Springboot整個(gè)Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)的示例代碼
這篇文章主要介紹了Springboot整個(gè)Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
springboot如何讀取配置文件到靜態(tài)工具類(lèi)
這篇文章主要介紹了springboot實(shí)現(xiàn)讀取配置文件到靜態(tài)工具類(lèi)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Feign實(shí)現(xiàn)跨服務(wù)文件上傳下載
這篇文章主要為大家詳細(xì)介紹了Feign實(shí)現(xiàn)跨服務(wù)文件上傳下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Java Map簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關(guān)系集的形式查看某個(gè)映射的內(nèi)容。本文是動(dòng)力節(jié)點(diǎn)java學(xué)院給大家整理的java map知識(shí),需要的的朋友參考下吧2017-05-05

