Java使用Poi填充Word表格模板(图片和文字)

Java使用Poi填充Word表格模板(图片和文字)

**** 由于个人需求需要对表格模板进行操作,所以本文章只对表格进行替换数据操作,没有段落,没有循环遍历,没有延伸!!!!!(后续补充!!!)

**** 由于本人是个菜鸡,所以也查了很多"大佬"的方法,有的完全是照搬,有的还照搬不完全,稀里糊涂的扔一大堆。谢谢这些"大佬"们的分享。真是人逼人,逼死人。我xxx!!!!

**** 话不多说,上案例,直接复制可用,更换自己东西就行了。

测试类:

public void wordUtils() throws IOException, ParseException {
   
        // 本地文件 自行更换
        // 模板文件地址
        String inputUrl = "src\\test\\resources\\DTAQZY3.docx";
        // 新生产的模板文件
        String outputUrl = "src\\test\\resources\\test2.docx";
        // 图片地址
        String imageUrl = "src\\main\\resources\\Xiong.jpg";
        XWPFDocument document = WordUtils.inputDocument(inputUrl);
        byte[] bs = WordUtils.getImageByteArray(imageUrl);
        // model() 对应填充元素,自行填写  例如 dataMap.put("name","张三");
        // model() 这个方法自己写!!!要不然就在测试类直接往紧塞!!! new 对象 .set 然后 .put 往紧塞!
        Map<String, Object> dataMap = model();
        // imageMap 填充单个图片元素集合,需与数据模型元素分开填充
        // 多张图片请填充多个集合
        Map<String, Object> imageMap = new HashMap<>();
        imageMap.put("width", 700000);
        imageMap.put("height", 700000); // 宽高设置尽量大些,底层沿用EMU计算
        //EMU(英制公制单位)。1 EMU = 1/914400英寸= 1/36000 mm
        String[] imageSplit = imageUrl.split("\\."); // 请根据各自的路径进行分割,反斜杠分割要写"\\\\"
   		// 可直接更换为文件名称后缀,后续会自行判断
        imageMap.put("type", imageSplit[imageSplit.length - 1]); 
        imageMap.put("con", bs);
        dataMap.put("image", imageMap);
        // 处理文档数据
        String s = WordUtils.parseDocument(document, dataMap);
        System.out.println(s);
        // 导出填充后文档
        WordUtils.outputDocument(document, outputUrl);
    }

工具类(再次提醒,目前我的需求只对表格替换数据操作,没有段落,没有循环遍历,没有延伸,都后续补充!!!):

package com.lsh.espimp.soms.process.test;

import fr.opensagres.xdocreport.core.io.IOUtils;
import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.*;

import java.io.*;
import java.util.*;

/**
 * @author GPeng
 * @description: WordUtils 手写 ---测试版
 * @time 2022/11/09 14:58
 **/
public class WordUtils {
   

    /**
     * @param inputFileUrl 模板读取路径
     * @return org.apache.poi.xwpf.usermodel.XWPFDocument
     * @description: 读取模板文件
     * @author GPeng
     * @time 2022/11/09 15:02
     **/
    public static XWPFDocument inputDocument(String inputFileUrl) throws IOException {
   
        XWPFDocument document = new XWPFDocument(POIXMLDocument.open
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 在Java中,可以使用Apache POI库来填充Word模板表格数据。POI是一个用于读取和写入Microsoft Office格式文件的Java库。使用POI,我们可以创建和填充Word模板中的表格数据。 首先,需要导入POI库到项目中。接着,就可以使用POI的XWPFDocument类来操作Word文档。可以使用XWPFDocument类的构造方法来打开模板文件,并将其读取到内存中。然后,需要定位到要填充表格数据的位置。使用XWPFTable类可以获取表格对象,并使用getRows()方法获取表格中的行。然后,可以使用XWPFTableRow类来获取特定行的单元格对象,并使用getCell()方法获取单元格。 为了填充表格数据,需要提供数据源。可以使用Java中的集合类(如List或Map)来存储数据。然后可以使用循环来遍历数据源,依次填充表格中的单元格。可以使用XWPFParagraph类来创建段落对象,并使用该类的createRun()方法创建Run对象。使用Run对象的setText()方法即可将数据填充到单元格中。 填充表格数据后,需要保存Word文档。可以使用XWPFDocument类的write()方法将修改后的文档保存到磁盘上。 总的来说,使用POI填充Word模板表格数据可以简化表格数据填充的过程,并可以提高代码的可读性和可维护性。 ### 回答2: Java使用POI填充Word模板表格数据是一种非常常见的应用场景。POI是一个开放源代码库,允许Java程序员使用Java语言创建、修改和读取各种Microsoft Office格式文件,如Excel、Word和PowerPoint。 填充Word模板表格数据的主要步骤如下: 1.导入POI的相关jar包,可通过Maven或手动引入方式。 2.创建一个Word文档,将其保存为模板文件(*.dotx)。 3.使用POI的XWPFDocument类将模板文件加载到内存中,然后通过XWPFTable类获取表格对象。 4.使用XWPFTableRow和XWPFTableCell类,遍历表格行和列,对需要填充的单元格进行赋值操作。 5.完成赋值后,使用OutputSteam将数据写入新的Word文件中,保存完成。 下面给出一个使用POI填充Word模板表格数据的例子: ``` public static void fillTemplate(String templatePath, String destPath, Map<String, String> data) throws Exception { //加载模板文件 XWPFDocument document = new XWPFDocument(new FileInputStream(new File(templatePath))); //获取表格对象 List<XWPFTable> tables = document.getTables(); XWPFTable table = tables.get(0); //遍历表格行和列 for (XWPFTableRow row : table.getRows()) { for (XWPFTableCell cell : row.getTableCells()) { //获取单元格内容 String text = cell.getText(); if (text != null && data.containsKey(text)) { //填充数据 cell.setText(data.get(text)); } } } //保存填充数据后的新文件 OutputStream os = new FileOutputStream(new File(destPath)); document.write(os); os.flush(); os.close(); } ``` 在上面的例子中,我们首先通过XWPFDocument类将模板文件加载到内存中,然后获取表格对象。接着,我们遍历表格行和列,对需要填充的单元格进行赋值操作,最后使用OutputStream将数据写入新的Word文件中,完成填充数据的操作。 综上所述,使用POI填充Word模板表格数据是一种实现简单、使用方便的方式,对于需要生成大量Word文档且格式固定的企业业务而言,具有非常实际的意义和应用价值。 ### 回答3: Java使用POI填充Word模板表格数据的方法主要分为以下几个步骤: 1.打开Word模板 使用POI的`XWPFDocument`类打开Word模板文件,例如: ```java XWPFDocument doc = new XWPFDocument(new FileInputStream("模板.docx")); ``` 2.获取Word表格 通过`XWPFDocument`对象获取模板中的表格,例如: ```java List<XWPFTable> tables = doc.getTables(); XWPFTable table = tables.get(0); // 获取第一个表格 ``` 3.获取表格行和单元格 通过`XWPFTable`对象获取表格的行和单元格,例如: ```java List<XWPFTableRow> rows = table.getRows(); XWPFTableRow row = rows.get(rowIndex); // 获取第rowIndex行 XWPFTableCell cell = row.getCell(cellIndex); // 获取第cellIndex个单元格 ``` 4.填充单元格数据 通过`XWPFTableCell.setText()`方法填充单元格数据,例如: ```java cell.setText(data); // 填充数据 ``` 5.保存Word文档 使用`XWPFDocument`的`write()`方法将填充好数据的Word文档保存到本地,例如: ```java doc.write(new FileOutputStream("填充后的文档.docx")); ``` 使用以上的步骤,就可以很方便地使用JavaPOI填充Word模板表格数据了。需要注意的是,填充数据的过程中,表格的行和列都需要对应好数据的长度。如果数据填充不全,可能会影响整个表格的显示效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值