返回顶部
首页 > 资讯 > 后端开发 > JAVA >java根据自定义的word模板生成文档
  • 284
分享到

java根据自定义的word模板生成文档

java开发语言apachemaven 2023-09-28 21:09:41 284人浏览 泡泡鱼
摘要

文章目录 一、新建Word模板二、导入依赖三、编写代码1、替换文字2、插入图片 提示:以下是本篇文章正文内容,下面案例可供参考 一、新建Word模板 在你需要动态生成的内容使用{fi

文章目录

提示:以下是本篇文章正文内容,下面案例可供参考

一、新建Word模板

模板文档
在你需要动态生成的内容使用{field}作为占位符,后面代码扫描到就将占位符换成自己的动态内容。

二、导入依赖

  <dependency>         <groupId>org.apache.poigroupId>         <artifactId>poiartifactId>         <version>4.1.2version>     dependency>     <dependency>         <groupId>org.apache.poigroupId>         <artifactId>poi-ooxmlartifactId>         <version>4.1.2version>     dependency>     <dependency>         <groupId>commons-iogroupId>         <artifactId>commons-ioartifactId>         <version>2.11.0version>     dependency>

三、编写代码

1、替换文字

代码如下(示例):

   public static void main(String[] args) {        try {            String templatePath = "C:\\Users\\Administrator\\Desktop\\test3.docx";            String outputPath = "C:\\Users\\Administrator\\Desktop\\output.docx";            InputStream inputStream = new FileInputStream(templatePath);            XWPFDocument document = new XWPFDocument(inputStream);            Map<String, String> HashMap = new HashMap<>();            hashMap.put("name", "JUVENILESS");            hashMap.put("gender", "男");            hashMap.put("schoolNumber", "13123132");            hashMap.put("qq", "123123");            hashMap.put("nativePlace", "测试");            hashMap.put("profession", "测试啊");            hashMap.put("birth", "2025-10");            hashMap.put("dORM", "I123");            hashMap.put("cellNumber", "12345678911");            hashMap.put("introduction", "简单的自我介绍");            hashMap.put("futureOutlook", "简单的对未来发展");            hashMap.put("award", "拿过的奖项拿过的奖项");            hashMap.put("department","部门");            hashMap.put("year","年份");            // 替换占位符            replacePlaceholdersInDocument(document, hashMap);            // 插入图片            insertPictureInTableCell(document, "{picture}", picturePath);            // 保存生成的文档            FileOutputStream outputStream = new FileOutputStream(outputPath);            document.write(outputStream);            outputStream.close();            System.out.println("生成的文档已保存。");        } catch (Exception e) {            e.printStackTrace();        }    }    private static void replacePlaceholdersInDocument(XWPFDocument document, Map<String, String> hashMap) {        for (XWPFParagraph paragraph : document.getParagraphs()) {            replaceParagraPHPlaceholders(paragraph, hashMap);        }        for (XWPFTable table : document.getTables()) {            for (XWPFTableRow row : table.getRows()) {                for (XWPFTableCell cell : row.getTableCells()) {                    for (XWPFParagraph paragraph : cell.getParagraphs()) {                        replaceParagraphplaceholders(paragraph, hashMap);                    }                }            }        }    }

直接运行即可。运行结果图为:
结果图

2、插入图片

这里我是查找表格的单元格里的占位符。
图片文档模板

代码如下(示例):

static String picturePath = "C:\\Users\\Administrator\\Desktop\\picture.jpg";  public static void main(String[] args) {        try {            String templatePath = "C:\\Users\\Administrator\\Desktop\\test4.docx";            String outputPath = "C:\\Users\\Administrator\\Desktop\\output1.docx";            InputStream inputStream = new FileInputStream(templatePath);            XWPFDocument document = new XWPFDocument(inputStream);                        // 插入图片            insertPictureInTableCell(document, "{picture}", picturePath);            // 保存生成的文档            FileOutputStream outputStream = new FileOutputStream(outputPath);            document.write(outputStream);            outputStream.close();            System.out.println("生成的文档已保存。");        } catch (Exception e) {            e.printStackTrace();        }    }    private static void insertPictureInTableCell(XWPFDocument document, String placeholder, String picturePath) throws Exception {        List<XWPFTable> tables = new ArrayList<>(document.getTables());        for (XWPFTable table : tables) {            List<XWPFTableRow> rows = new ArrayList<>(table.getRows());            for (XWPFTableRow row : rows) {                List<XWPFTableCell> cells = new ArrayList<>(row.getTableCells());                for (XWPFTableCell cell : cells) {                    List<XWPFParagraph> paragraphs = new ArrayList<>(cell.getParagraphs());                    for (XWPFParagraph paragraph : paragraphs) {                        List<XWPFRun> runs = new ArrayList<>(paragraph.getRuns());                        for (XWPFRun run : runs) {String text = run.getText(0);if (text != null && text.contains(placeholder)) {    int index = text.indexOf(placeholder);    if (index >= 0) {        // 移除占位符        run.setText(text.replace(placeholder, ""), 0);        // 在当前段落中插入图片        XWPFRun pictureRun = paragraph.createRun();        try (FileInputStream pictureInputStream = new FileInputStream(picturePath)) {            pictureRun.addPicture(pictureInputStream, Document.PICTURE_TYPE_JPEG, "picture.jpg", Units.toEMU(200), Units.toEMU(200));        }    }}                        }                    }                }            }        }    }

生成的结果如下:
生成结果
这里我发现图片的尺寸没法保证跟单元格大小一致,也尝试过很多种方法都不太行。哪位大佬尝试尝试哈哈哈哈


来源地址:https://blog.csdn.net/a12789sd/article/details/131451986

--结束END--

本文标题: java根据自定义的word模板生成文档

本文链接: https://lsjlt.com/news/420772.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java根据自定义的word模板生成文档
    文章目录 一、新建Word模板二、导入依赖三、编写代码1、替换文字2、插入图片 提示:以下是本篇文章正文内容,下面案例可供参考 一、新建Word模板 在你需要动态生成的内容使用{fi...
    99+
    2023-09-28
    java 开发语言 apache maven
  • Java根据word模板生成word文档并转成PDF文件
    1. 处理word模板 1.1 定义word模版 1.2 定义完我们的模板之后,我们要将文档保存为xml的格式 定义完我们的模板之后,我们要将文档保存为xml的格式 1.3 xml格式化 ...
    99+
    2023-09-09
    java word pdf chart
  • java 导出word,java根据提供word模板导出word文档
    本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字、图片填充。一共提供了两种方式,1.基于本地文件 2.基于网络文件 本文讲解思路,1.先看示例,2. 示例对应的代码展示 3. 基本概念讲解(api自行查阅文档)。 这...
    99+
    2023-08-17
    word java 开发语言
  • 【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)
    这篇文章,主要介绍如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 (1)引入依赖 (2)创建Freemarke...
    99+
    2023-10-23
    word Java导出Word Freemarker Word文档导出功能 根据模板文件导出Word文档
  • Java实现根据模板自动生成新的PPT
    目录项目需求模板文件如下实现过程1.引入第三方依赖2.编写业务代码3.根据模板生成新的PPT项目需求 最近项目中有一个需求就是让Java代码去代替人工操作,自动生成PPT,具体就是查...
    99+
    2024-04-02
  • java怎么根据xml模板生成xml文件
    在Java中,可以使用DOM(Document Object Model)或者JAXB(Java Architecture for ...
    99+
    2024-03-07
    java
  • 教你使用Python根据模板批量生成docx文档
    目录一、需求说明二、实验准备三、代码实现四、实验结果一、需求说明 能够根据模板批量生成docx文档。具体而言,读取excel中的数据,然后使用python批量生成docx文档。 二、...
    99+
    2024-04-02
  • 怎么在Python中根据模板批量生成docx文档
    今天就跟大家聊聊有关怎么在Python中根据模板批量生成docx文档,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、需求说明能够根据模板批量生成docx文档。具体而言,读取exce...
    99+
    2023-06-15
  • java根据模板动态生成PDF实例
    一、需求说明:根据业务需要,需要在服务器端生成可动态配置的PDF文档,方便数据可视化查看。二、解决方案:iText+FreeMarker+JFreeChart生成可动态配置的PDF文档iText有很强大的PDF处理能力,但是样式和排版不好控...
    99+
    2023-05-31
    java 生成pdf ava
  • Java通过Freemarker模板实现生成Word文件
    目录1.  准备模板2.  代码实现3. PDF文件加水印1.  准备模板 模板 + 数据 = 模型 1、将准备好的Word模板文件另存为.xml文件(...
    99+
    2024-04-02
  • Python自动化之批量生成含指定数据的word文档
    目录一、需求说明二、开始动手动脑三、总结一、需求说明 在平时工作当中,经常需要处理文件,特别是Word,处理Word时会遇一类比较常见的场景:文档中大部分文字固定不变,小部分内容需要...
    99+
    2024-04-02
  • Java模板动态生成word文件的方法步骤
    最近项目中需要根据模板生成word文档,模板文件也是word文档。当时思考一下想用POI API来做,但是觉得用起来相对复杂。后来又找了一种方式,使用freemarker模板生成wo...
    99+
    2024-04-02
  • 最简单的java生成word文档方法
    1.首先新建一个word文档,然后设计好格式,比如说我的标题是黑体二号,居中对其,正文是宋体四号,如下 2.另存为xml格式(文件->另存为)的文件,如下图 3.使用txt...
    99+
    2024-04-02
  • Python怎么批量生成含指定数据的word文档
    这篇文章将为大家详细讲解有关Python怎么批量生成含指定数据的word文档,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、需求说明在平时工作当中,经常需要处理文件,特别是Word,处理Word时会遇一...
    99+
    2023-06-21
  • java用模板生成word(docx)文档(含动态表格)
    生成word思路 用WPS或者office编辑好word的样式,然后另存为word xml文档,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Docx。 编辑好需要使用的word文档 把需要注入的...
    99+
    2023-09-16
    word java 开发语言
  • Python自动化办公之Word文档的创建与生成
    目录保存生成 word生成标题生成段落添加图片添加表格分页上几章节我们主要学习了如何读取文章,而主要任务是读取文档中的文本信息,也就是字符串,而图片本身是不可读的文件所以并没有去读取...
    99+
    2024-04-02
  • 使用java怎么自动生成数据库文档
    今天就跟大家聊聊有关使用java怎么自动生成数据库文档,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、引入pom.xml依赖<dependencies> &n...
    99+
    2023-06-15
  • 如何使用LiveDocx和Zend Framework生成基于模板的文档
    小编给大家分享一下如何使用LiveDocx和Zend Framework生成基于模板的文档,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用PHP生成打印良好的格...
    99+
    2023-06-02
  • JAVA利用Freemarker模版动态生成并导出word文档(全网最详细)
    文章目录 一、文章背景二、实现步骤1、需要的环境2、创建模板3、书写java类4、测试 三、freemarker技术点 一、文章背景 公司的某个需求,需要根据接口的信息生成一...
    99+
    2023-09-09
    java word 开发语言
  • java如何实现自动生成数据库设计文档
    目录前言实现步骤main方法类全部代码表qrtz_blob_triggers表qrtz_calendars表qrtz_cron_triggers前言 以前我们还需要手写数据库设计文档...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作