Skip to content

Office操作工具类

1. Excel 操作工具类

说明

  • 读取工具类:com.kg.component.office.ExcelReadUtils.java
  • 写入工具类:com.kg.component.office.ExcelWriteUtils.java

- 1.1 导入 Excel 工具类(读取 Excel)

  • 读取方法1:读取Excel文件内容,返回【实体列表】

导入Excel方法

  • 读取方法2:读取Excel文件内容,返回【Map列表】

导入Excel方法

- 1.2 导出 Excel 工具类(写入 Excel)

导出Excel方法

2. Word 操作工具类

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 原理:

  1. 先读取word模板
  2. 根据 ${tag} 标签替换数据(字符串,表格,图片)
  3. 再写入新的word文件
  • 模板文件格式如下图:

导入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:写入图片指定宽高

写入图片