工作中经常会用到 Apache POI去操作Word文档,自己整理了一个工具类,简单实用,其中包含了新建标题、段落、表格、饼图、柱形图、折线图等方法。先上效果图
在pom文件中引入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
添加Word工具类
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.xddf.usermodel.chart.*;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTDLbls;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
import java.io.IOException;
import java.math.BigInteger;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordUtils {
public void replaceInPara(XWPFDocument doc, Map<String, Object> params) {
Iterator<XWPFParagraph> iterator = doc.getParagraphsIterator();
while (iterator.hasNext()) {
replaceInPara(iterator.next(), params);
}
}
public void replaceInAllTable(XWPFDocument doc, Map<String, Object> params) {
Iterator<XWPFTable> iterator = doc.getTablesIterator();
while (iterator.hasNext()) {
replaceInTable(iterator.next(), params);
}
}
public void replaceInTable(XWPFDocument doc, int[] tabIndex, Map<String, Object> params) {
List<XWPFTable> tables = doc.getTables();
for (int index : tabIndex) {
replaceInTable(tables.get(index), params);
}
}
public void replaceInTable(XWPFTable table, Map<String, Object> params) {
List<XWPFTableRow> rows;
List<XWPFTableCell> cells;
List<XWPFParagraph> paras;
if (matcher(table.getText()).find()) {
rows = table.getRows();
for (XWPFTableRow row : rows) {
cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
paras = cell.getParagraphs();
for (XWPFParagraph para : paras) {
replaceInPara(para, params);
}
}
}
}
}
public void insertTableRow(XWPFTable table, List<String[]> rowDatas) {
for (String[] cellDatas : rowDatas) {
XWPFTableRow row = table.createRow();
List<XWPFTableCell> cells = row.getTableCells();
for (int j = 0; j < cells.size(); j++) {
cells.get(j).setText(cellDatas[j]);
}
}
}
private void replaceInPara(XWPFParagraph para