java根据模板导出word

这篇具有很好参考价值的文章主要介绍了java根据模板导出word。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java根据模板导出word

日常开发中,常常会遇到各种各样的表格进行导出,比较好的办法就是提前弄好word模版,再通过遍历的方式进行导出文档

1、制作word模版

模版编写 内容替换

目标下面模版进行多页展示

java根据模板导出word,java,word,c#

将word转换成xml

java根据模板导出word,java,word,c#

将xml格式化 再将xml改成ftl

xml格式化地址

java根据模板导出word,java,word,c#

list找到起始位置和结束位置

起始位置插入<#list list as l>
结束位置插入</#list>

java根据模板导出word,java,word,c#

2、java代码

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

ExportWordFtl.java

package com.liuhm.utils;

import freemarker.template.Configuration;
import freemarker.template.Template;
import org.junit.platform.commons.util.StringUtils;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 *  
 *  @ClassName:ExportWordFtl
 *  @Description: TODO
 *  @Author: liuhaomin
 *  @Date: 2023/7/21 16:02
 */
public class ExportWordFtl {
    /**
     * 生成word文件
     * @param dataMap word中需要展示的动态数据,用map集合来保存
     * @param templateName word模板名称,例如:test.ftl
     * @param filePath 文件生成的目标路径,例如:D:/wordFile/
     * @param fileName 生成的文件名称,例如:test.doc
     */
    @SuppressWarnings("unchecked")
    public static File createWord(Map dataMap, String templateName, String filePath, String fileName){
        try {
            //创建配置实例
            Configuration configuration = new Configuration();
            //设置编码
            configuration.setDefaultEncoding("UTF-8");

            //ftl模板文件
            configuration.setClassForTemplateLoading(ExportWordFtl.class,"/");

            //获取模板
            Template template = configuration.getTemplate(templateName);

            //输出文件
            File outFile ;
            if(StringUtils.isBlank(filePath)){
                outFile = new File(fileName);
            }else {
                outFile = new File(filePath+ File.separator+fileName);
                //如果输出目标文件夹不存在,则创建
                if (!outFile.getParentFile().exists()){
                    outFile.getParentFile().mkdirs();
                }
            }

            //将模板和数据模型合并生成文件
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));

            //生成文件
            template.process(dataMap, out);

            //关闭流
            out.flush();
            out.close();
            return outFile;
        } catch (Exception e) {
            e.printStackTrace();

        }
        return null;
    }
    public static void main(String[] args) {
        List<Map<String, Object>> list = new ArrayList<>();
        for (int i = 0; i <10 ; i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("datasubmit_updated_time","2023-07-02 12:12:12");
            Date date = new Date();
            map.put("nyliq",date);
            map.put("yhorq","单位名称"+i);
            map.put("xiikv","隐患类型"+i);
            map.put("kuzjg","隐患整改通知书类型"+i);
            map.put("hnvld","隐患详情"+i);
            map.put("gnbcv",date);
            map.put("malio",date);
            map.put("skpfm","整改情况告知书编号"+i);
            map.put("vgnje","整改状态"+i);
            map.put("vutap","备注"+i);
            list.add(map);
        }
        Map<String,Object> dataMap = new HashMap<String, Object>();
        dataMap.put("list", list);

        try {
            String path = "C:\\Users\\Administrator\\Desktop\\";
//            path = URLDecoder.decode(Test.class.getClassLoader().getResource("").getPath(), "UTF8");
            File file = ExportWordFtl.createWord(dataMap, "template/demo.ftl", path, "demo-t.doc");
            System.out.println("文档生成成功,路径为" + file.getAbsolutePath() );
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

测试

执行main方法

生成文件

java根据模板导出word,java,word,c#

java根据模板导出word,java,word,c#

所有的文件格式正确
模版里面的参数 修改 防止字段为空或者字段不存在 如

${l.jfwor?string('yyyy-MM-dd')} 改成${(l.jfwor?string('yyyy-MM-dd'))!}
${l.jfwor} 改成${(l.jfwor)!}

博客地址

代码下载

下面的export-template-word文章来源地址https://www.toymoban.com/news/detail-616901.html

到了这里,关于java根据模板导出word的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用原生POI和EasyPoi根据word模板导出word工具类

    前两天接了个需求,要求将数据导出成word,里边有边个,有其他的东西,怎么说这,这个需求最开始就是上传word,下载附件就行了,非得改成上传数据然后支持下载word。有股脱裤子放屁的感觉 而且呢,当时做的时候前任开发在数据库存了一个巨大的Json文件,解析也挺费劲的

    2024年01月25日
    浏览(58)
  • java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能。 下面是一个简单的示例代码,可以帮助您快速入门。 模板制作:offer,wps都行,我使用wps进行操作  第一步制作模板 CTRL+f9生成域------》鼠标右键编辑域------》选

    2024年02月14日
    浏览(49)
  • java根据excel模板进行导出数据

     一、pom文件添加以下依赖 二、添加util包 三、在resources目录下添加template并添加xlsx模板  注意:xlsx模板使用${list.XXX}     XXX表示数据源list(map形式的list)的数据key值,如果list是对象形式的,那么就是该业务字段  四、业务层使用:

    2024年02月11日
    浏览(44)
  • Java根据word模板生成word文档并转成PDF文件

    定义完我们的模板之后,我们要将文档保存为xml的格式 生成的xml格式看起来比较乱,没有层次感, 所以需要格式化一下 格式化 基础信息的定义 基础信息的定义只要保证我们转化成的xml文件中的${name}等格式没错误即可 表格的定义 遍历实现,表格的数据填充 在xml文件中我们的

    2024年02月09日
    浏览(62)
  • java利用模板导出word文档

    1.依赖: 1.普通数据 2.表格 3.1编辑模板:选中区域,按ctrl+F9,右键编辑域,选择邮件合并,输入参数 参数后面加“!”可以避免参数为null而报错,  3.2.代码:  3.3展示 1.数据类型 布尔型:等价于java的Boolean类型,不同的是不能直接输出,可转化为字符串输出 日期型:等价于

    2024年02月04日
    浏览(48)
  • java按照模板导出pdf或者word

    (一)制作模板  1、在word里制作模板         因为PDF常用的软件不支持编辑,所以先用Word工具,如WPS或者Office新建一个空白Word文档,里面制作出自己想要的样式。 2、 将Word转换成PDF形式          将设置好的Word文档转换成PDF形式,保存起来。 3、编辑PDF准备表单 

    2024年02月06日
    浏览(51)
  • Java利用POI-TL模板导出Word文档

    本文详细介绍了如何使用POI-TL,一个基于Apache POI的Word模板引擎,来导出Word文档。文章内容包括POI-TL的基本介绍,为什么选择POI-TL,以及如何使用POI-TL来处理文本、图片、表格、列表、嵌套、条件判断显示、非空集合循环和图表等内容。

    2024年02月09日
    浏览(110)
  • JAVA之利用easypoi将word模板导出为pdf(可带图片)

    EasyPoi是一款基于POI的Java快速导出/导入Excel工具。它在POI的基础上进行了封装,提供了更加简洁易用的API,使得生成Excel文件更加容易和高效。 使用EasyPoi可以轻松地生成Excel文件,并支持多种格式,如xlsx、xls、csv等。同时,EasyPoi也支持读取Excel文件,可以方便地获取其中的数

    2024年02月08日
    浏览(55)
  • (Java)word转pdf(aspose),pdf加水印(itextpdf),并支持POI模板(包括checkbox)导出

    目录 1、引入jar包 2、pdf处理工具类 3、poi模板导出工具类 4、测试类 5、模板 6、最终效果  1、引入jar包   2、pdf处理工具类  3、poi模板导出工具类  4、测试类 5、模板 6、最终效果 

    2024年02月06日
    浏览(73)
  • vue项目根据word模版导出word文件

    一、安装依赖 二、创建word模版 也就是编辑一个word文档,文档中需要动态取值的地方用{变量}取值;表格数据可以进行循环,以{#数组变量名}开始,以{/数组变量名}结束,如果数组变量是字符串而非对象则{#table}{.}{/table}。图片以{%图片base64变量名}展示,{%%图片base64变量名}表

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包