Java如何基于poi操作Wold工具类
Apache封装的POI组件对Excel,Wold的操作已经非常的丰富了,在项目上也会经常用到一些POI的基本操作
这里就简单的阐述POI操作Wold的基本工具类,代码还是有点粗造的,但是不影响使用。
这个类包含了一些对文本进行换行,加粗,倾斜,字体颜色,大小,首行缩进,添加边框等方法。分享给大家学习下:
- Apache POI的组件:
- ApachePOI包含用于处理MS-Office的所有OLE2复合文档的类和方法。该API的组件列表如下 -
- POIFS(不良混淆实现文件系统) - 此组件是所有其他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(可怕的幻灯片布局格式) - 用于阅读,创建和编辑PowerPoint演示文稿。
- HDGF(可怕的DiaGram格式) - 它包含MS-Visio二进制文件的类和方法。
- HPBF(可怕的PuBlisher格式) - 用于读写MS-Publisher文件。
下面就献上代码:
首先我们引入需要的第三方jar包
<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;
/**
* 初始化创建Word文件
*/
public WoldUtil(){
document = new XWPFDocument();
}
/**
* 创建一个段落
* @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);//设置上边框
paragraph.setBorderBottom(Borders.THICK);//设置下边框
paragraph.setBorderLeft(Borders.THICK);//设置左边框
paragraph.setBorderRight(Borders.THICK);//设置右边框
}
/**
* 双线边框
*/
public void createBorderDouble(){
paragraph.setBorderTop(Borders.DOUBLE);//设置上边框
paragraph.setBorderBottom(Borders.DOUBLE);//设置下边框
paragraph.setBorderLeft(Borders.DOUBLE);//设置左边框
paragraph.setBorderRight(Borders.DOUBLE);//设置右边框
}
/**
* 首行缩进
* @param indentation
*/
public void addTextIndent(Integer indentation){
paragraph.setIndentationFirstLine(indentation);
}
/**
* 创建文本信息
* @param text 文本信息
* @param bold 是否加粗 true为加粗
* @param italic 是否倾斜 true为倾斜
* @param color 颜色码
* @param fontSize 字体大小
* @param fontFamily 设置字体
*/
public void createRun(String text, Boolean bold,Boolean italic, String color,Integer fontSize,String fontFamily){
XWPFRun r = paragraph.createRun();//创建段落文本
r.setText(text);
r.setBold(bold);//设置为粗体 true 为粗体
r.setItalic(italic);//设置为倾斜 true 为粗体
r.setColor(color);//设置颜色
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("文件出现错误");
}
}
/**
* 创建空行
* @param counts 空行个数
*/
public void createEmpty(Integer counts){
for(int i =0;i<counts;i++){
XWPFParagraph empty = document.createParagraph();
XWPFRun e = empty.createRun();
e.setText(" ");
}
}
/**
* 查询wold中的数据 返回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);// 创建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("(标题居中)Apache POI的组件", true, false,"000000",17,FontFamily.BLACKBODY);
woldUtil.createBorderDouble();
woldUtil.createParagraph(0);
woldUtil.createRun("(边框)Apache POI包含用于处理MS-Office的所有OLE2复合文档的类和方法。该API的组件列表如下:", false,true, "4682B4",15,FontFamily.CHINESE_FINE_BLACK);
woldUtil.createEmpty(3);
woldUtil.createParagraph(0);
woldUtil.addTextIndent(600);
woldUtil.createRun("(首行缩进)• POIFS(不良混淆实现文件系统) - 此组件是所有其他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());
}
}
测试截图
以上是 Java如何基于poi操作Wold工具类 的全部内容, 来源链接: utcz.com/z/312060.html