java根据word模板导出word文件

2023-10-29

1、word模板文件处理,如下图所示在word 文档中填值的地方写入占位变量

2、将word文档另存为xml文件、编辑如下图,找到填写的占位,修改为${bcrxm}格式

3、将文件后缀名改为.ftl文件

4、java处理过程 、 引入frameMark jar 包

5、java代码

一、将需要填充的数据封装到map中、与模板中的占位对应、为什么用map 我也不知道。

二、创建configuration对象

三、设置编码 utf-8

四、获取模板 configuration.setDirectoryForTemplateLoading() 方法、configuration.getTemplate()方法

五、将模板和数据模型合并生成文件 template.process(map, out); //map为封装的数据、out为输出流对象

6、完整代码、configuration.setClassForTemplateLoading 方法有不同的使用方式、可以根据自己的需要选择、具体使用方法、问度娘。

public static  String createWord1(Map dataMap,String templateName,String filePath,String fileName,HttpServletRequest request,HttpServletResponse response){
            String    fileOnlyName=null;
            try {
                //创建配置实例 
                Configuration configuration = new Configuration();
                
                //设置编码
                configuration.setDefaultEncoding("UTF-8");
                
                //ftl模板文件统一放至 template 包下面
                configuration.setClassForTemplateLoading(Util.class,"/template/");
                
                //获取模板 
                Template template = configuration.getTemplate(templateName,"UTF-8");
                //重命名
                fileOnlyName = rename(fileName);
                //定义路径 统一放到 webappo/hgjc/uploadRoot目录下
                String servicePath = request.getSession().getServletContext().getRealPath(File.separator);
                String basePath = ReadConfig.getConfigValue("uploadRoot")+File.separator+ReadConfig.getConfigValue(filePath)+File.separator+fileOnlyName; 
                //输出文件
                File outFile = new File(servicePath+basePath);
                
                //如果输出目标文件夹不存在,则创建
                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();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return fileOnlyName;
        }

参考:https://www.cnblogs.com/vitre/p/5619479.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java根据word模板导出word文件 的相关文章

随机推荐

  • 8051单片机实战分析(以STC89C52RC为例)

    在第一篇到第九篇博文中 我们认识到了一些基于IO口输入与输出的基础电子器件使用 8051单片机实战分析 以STC89C52RC为例 01 点亮一个LED 8051单片机实战分析 以STC89C52RC为例 02 LED延时约5s闪烁 805
  • pinia 介绍与安装

    目录 一 什么是pinia 二 为什么要使用pinia 三 准备工作 1 基于Vue3 TS Vite创建项目 2 安装pinia 四 搭建pinia模块 1 在src下创建store目录 并创建index ts文件 2 挂载pinia 一
  • Python入门教程(三)

    一 条件控制 Python条件语句是通过一条或多条语句的执行结果 true或者false 来决定执行的代码块 1 if语句 Python中if语句格式为 if condition1 为true时将执行statement的语句 如果condi
  • powershell使用conda activate激活环境出错的三个解决方法

    可能有两个原因 一共三个解决办法 方法一 原因很有可能是上次未deactivate windows系统下在powershell终端输入 activate deactivate 如果是Mac或Linux系统输入 激活环境 source act
  • CUDA矩阵乘法

    include
  • java8 retry 重试机制_Python异常失败重试模块:retrying,python爬虫必备利器

    图 文 迷神 从之前写的 Python登陆小米路由器拨号更换IP 绕过网站反爬IP限制机制 我们就可以看到python有一种重试机制 很好用 特别是在写爬虫的时候 简直是python爬虫必备利器 工作中也经常碰到的问题就是 某个方法出现了异
  • VS2017社区版Community 许可证过期解决方法

    之前过期可以登录自己的github账号再认证一下就OK了 但是这次就是登录不上会有脚本错误的弹窗 搜到一个方法亲测有效 也非常简单 找一个同等开发环境 把对应路径下的许可证文件夹拷贝放到自己的文件夹下即可 感谢各位大佬愿意分享
  • AD学习笔记(二)——PCB布局布线

    PCB布局布线 1 先确定板子的大小 用Keep out层或机械层确定边框 2 布线 走线连接需为钝角 不能出现直角 锐角 布局时要考虑走线的难易 线长 走线要尽量短 和可能出现的绕线情况 顶层和底层线大规律要十字交叉 走线与边框距离大于1
  • 如何通过开发机连接远程机器开发(端口转发)

    MobaXterm方式 可以解决公司需要要用跳板机连接远程机器的问题 打开mobaxterm gt tools gt MobaSSHtunnel 就进入以下界面 Forward Port 写本地没有被用过的端口 这里用的是10023 SSH
  • 【Git系列】了解什么是版本控制

    了解什么是版本控制 1 什么是版本控制 2 为什么要有版本控制 3 常见的版本控制工具 4 版本控制分类 4 1 本地版本控制 4 2 集中版本控制 4 3 分布式版本控制 其他系列 Git最详细的体系化教程 学习git之前 我们需要先明白
  • 找出1000以内所有素数

    今天和大家分享一个打印1000以内所有素数的程序 这是我第一次在平台上分享我写的代码 希望对一些像我一样的初学者有点帮助 include
  • 计算机论文参考文献最新年份,参考文献时间格式

    参考文献时间格式 论文的参考文献是在学术研究过程中 对某一著作或论文的整体的参考或借鉴 本篇是小编为大家收集整理的参考文献时间格式 喜欢的朋友不要错过啦 参考文献时间格式 1 期刊 序号 主要作者 文献题名 J 刊名 出版年份 卷号 期号
  • 计算机网络——绪论

    6个章节 外加实验和复习课时 题目来自于题库 重在理解 翻译 概述 物理层 链路层 网络层 传输层 应用层 复习课 实验课 一 计算机网络的基本概念 21 世纪的一些重要特征就是 数字化 网络化 和 信息化 是一个以网络为核心的信息时代 网
  • centos7下面php5.6添加postgresql相关扩展【试行】

    下载相关资源 首先 请下载PDO PGSQL及pq两个扩展包源码 PDO PGSQL pq 我下的是 请上传到centos服务器 上传完毕 解压及编译 解压后 分别编译扩展 编译pq扩展 步骤如下 注意 使用phpize的时候需要到扩展根目
  • void 可以避免编译警告

    下面这个函数被声明返回一个int类型 static int hns nic net stop struct net device ndev hns nic net down ndev return 0 如果在调用的时候不关心这个返回值的话
  • Linux 内核将用 Nftables 替代 iptables

    新的防火墙子系统 包过滤引擎 Nftables 将在 Linux 3 13 中替代有十多年历史的iptables iptables netfilter在2001年加入到2 4内核中 诞生于2008年的 NFTables 设计替代 iptab
  • Linux高级命令02 查看文件内容命令、链接命令

    Python Web篇学习汇总 Part 01 Linux基础命令 操作系统与虚拟机软件 了解Ubuntu操作系统 Linux查看 切换目录命令 绝对路径和相对路径 创建 删除 复制 移动文件及目录命令 ls命令选项 mkdir和rm命令选
  • SpringBoot入门了解

    第 1 章 Spring Boot入门 1 简介 简化Spring应用开发的一个框架 整个Spring技术栈的一个大整合 J2EE开发的一站式解决方案 2 微服务 微服务 架构风格 服务微化 一个应用应该是一组小型服务 各司其职 那么对于负
  • edge浏览器证书错误NET::ERR_CERT_AUTHORITY_INVALID

    解决方案 使用fiddler后edge浏览器频繁证书报错 重置浏览器设置后正常
  • java根据word模板导出word文件

    1 word模板文件处理 如下图所示在word 文档中填值的地方写入占位变量 2 将word文档另存为xml文件 编辑如下图 找到填写的占位 修改为 bcrxm 格式 3 将文件后缀名改为 ftl文件 4 java处理过程 引入frameM