Appearance
Office操作工具类
1. Excel 操作工具类
说明
- 读取工具类:com.kg.component.office.ExcelReadUtils.java
- 写入工具类:com.kg.component.office.ExcelWriteUtils.java
- 1.1 导入 Excel 工具类(读取 Excel)
- 读取方法1:读取Excel文件内容,返回【实体列表】
- 读取方法2:读取Excel文件内容,返回【Map列表】
- 1.2 导出 Excel 工具类(写入 Excel)
2. Word 操作工具类
说明
- 实体类 - 字符串格式:com.kg.component.office.dto.WordStrFormatDTO.java
- 实体类 - 表格格式:com.kg.component.office.dto.WordTableFormatDTO.java
- 工具类 - 写入字符串:com.kg.component.office.WordWriteStringUtils.java
- 工具类 - 写入表格:com.kg.component.office.WordWriteTableUtils.java
- 工具类 - 写入图片:com.kg.component.office.WordWriteImageUtils.java
- 2.1 导出原理
导出 word 原理:
- 先读取word模板
- 根据 ${tag} 标签替换数据(字符串,表格,图片)
- 再写入新的word文件
- 模板文件格式如下图:
示例代码:
java
public static void main(String[] args) {
String templatePath = System.getProperty("user.dir") + "/templates/hello.docx";
String outPath = System.getProperty("user.dir") + "/module/target/hello1.docx";
// 1 读取模板文件内容
XWPFDocument doc = new XWPFDocument(new FileInputStream(templatePath));
// 2 写入内容
WordWriteStringUtils.writeStrByKey(doc, "data1", "标题1", false);
// 3 生成新的word文件
doc.write(new FileOutputStream(outPath));
doc.close();
}
- 2.2 写入字符串
2.2.1 写入字符串到指定位置
说明
- 多态方法1:无格式写入,直接写入到指定位置,一般在模板中什么格式写入就是什么格式
- 多态方法2:有格式写入,写入到指定位置,并设置格式
- 格式使用WordStrFormatDTO传入,该类定义了常用的格式
java
/**
* Word 文本、段落 - 常用属性
*
* @author ziro
* @date 2024/1/23 13:34
*/
@Getter
@Setter
public class WordStrFormatDTO {
// 是否加粗
private Boolean bold;
// 是否斜体
private Boolean italic;
// 是否下划线
private Boolean underline;
// 字体(例如:仿宋 宋体 楷体 Microsoft YaHei)
private String fontFamily;
// 字号
// 例如:10pt-五号 12pt-小四 14pt-四号 16pt-小三 18pt-三号 22pt-小二 24pt-二号 26pt-小一 36pt-一号
private Integer fontSize;
// 颜色(RRGGBB,如:FF0000表示红色)
private String color;
}
2.2.2 写入字符串到新行
说明
- 多态方法1:无格式写入,写入到新行,一般在模板中什么格式写入就是什么格式
- 多态方法2:有格式写入,写入到新行,并设置格式
- 格式使用WordStrFormatDTO传入,该类定义了常用的格式
2.2.3 写入/获取的文件格式,具体操作方法
- 2.3 写入表格
2.3.1 第一步:写入一个新表格(空)
说明
- 设置行数和列数,然后生成一个空表格,写入到文档
- 后面的操作步骤,在该表格内写入
2.3.2 第二步:写入标题行(单行)
说明
- 方法1:无格式,写入标题行
- 方法2:自定义格式,写入标题行
- 参数说明:
- cover参数,是否覆盖原内容(不覆盖,则在原内容后面追加)
- WordStrFormatDTO参数,自定义单元格内部文字内容的格式
注意
- 写入单行数据,可以写入任何单行数据,不止是标题行
2.3.3 第三步:写入数据行(多行)
说明
- 方法1:无格式,写入数据行
- 方法2:自定义格式,写入数据行
- 参数说明:
- cover参数,是否覆盖原内容(不覆盖,则在原内容后面追加)
- WordStrFormatDTO参数,自定义单元格内部文字内容的格式
2.3.4 其他操作1:合并单元格
2.3.5 其他操作2:设置表格格式/单元格格式
说明
- 设置表格格式:设置表格的宽度、高度、边框、背景色等
- 设置单元格格式:设置单元格的宽度、高度、边框、背景色等
- 参数说明:
- WordTableFormatDTO自定义样式
java
/**
* Word 表格 - 常用属性
*
* @author ziro
* @date 2024/1/24 9:46
*/
@Getter
@Setter
public class WordTableFormatDTO {
public WordTableFormatDTO() {
toDefault();
}
// 表格宽度类型(PCT-百分比)
private TableWidthType widthType;
// 表格宽度
private String width;
// 表格对齐方式(该表格在行内的对齐方式,不是表格内容的对齐方式)
private TableRowAlign align;
// 行高
private int rowHeight;
// 单元格对齐方式
private ParagraphAlignment cellAlign;
// 单元格垂直对齐方式
private XWPFTableCell.XWPFVertAlign cellValign;
// 单元格段前空白
private int cellSpaceBefore;
// 单元格段后空白
private int cellSpaceAfter;
// 单元格背景色
private String bgColor;
/**
* 默认格式
*/
public void toDefault() {
widthType = TableWidthType.PCT;// 宽度类型:百分比
width = "100%";// 宽度:100%
align = TableRowAlign.CENTER;// 对齐方式:居中
rowHeight = 400;// 行高:400
cellAlign = ParagraphAlignment.CENTER;// 单元格对齐方式:居中
cellValign = XWPFTableCell.XWPFVertAlign.CENTER;// 单元格垂直对齐方式:居中
cellSpaceBefore = 0;// 单元格段前空白:0
cellSpaceAfter = 0;// 单元格段后空白:0
bgColor = "FFFFFF";// 单元格背景色:白色
}
}
- 2.4 写入图片
说明
- 方法1:写入图片自动调整宽高(按照A4纸张,最大宽度:600px;最大高度:930px)
- 方法2:写入图片指定宽高