当前位置: 首页 > news >正文

如何制作Word模板并用Java导出自定义的内容

1前言

在做项目时会按照指定模板导出word文档,本文讲解分析需求后,制作word模板、修改模板内容,最终通过Java代码实现按照模板自定义内容的导出。

2制作word模板

2.1 新建word文档

新建word文档,根据需求进行编写模板内容,调整行间距和段落格式后将指定替换位置留空。

2.2 插入文档占位符

点击word需要插入占位符的位置,选择引用-插入引文-添加新占位符,编写占位符的内容(代码替换的字段)。
图 1 添加占位符

添加后的占位符是用左右括号包住的,如:(占位符字段)。
图 2 占位符

2.3 另存为xml文件

将所有的占位符插入完毕后,将word文档另存为xml文件。

图 3 另存为xml文件

2.4 编辑xml文件

通过idea或者文本编辑器打开xml文件,找到占位符1的位置,将其替换成${占位符1}的格式,中间「占位符1」为代码中需替换的字段内容,更改完成字段内容之后通过代码逻辑将其替换为有效的值。

最重要的一步,需要将xml的后缀名更改为ftl。

切记,不要直接从word保存为xml文档后直接修改后缀为ftl,步骤一定要和文档描述的顺序相同。
图 4 占位符代码图片

3模板修改详解

本章以列表、图形占位符为例来讲解修改步骤。

3.1 列表占位符的修改

第一步,模板里需要用变量填充表格,在模板中创建一个两行的表格,并给第一行的表格字段填充占位符。

图 5 列表模板

第二步,将文档另存为xml格式。

第三步,使用文本工具打开xml文件,根据第二节的内容修改占位符中的()为${},在模板中<w:tbl>表示一个表格、<w:tr>表示一行、<w:tc>表示一列。

因为FreeMarker是利用列表一行一行循环填充的,所以我们根据关键字找到<w:tbl>标签,因为第一个<w:tr>是表头注意不要改到了,找到第二个<w:tr>在前后分别加上如下语句即可,如果创建了三行的表格,则后面多余的表格的行<w:tr>需要删掉,添加完如下图所示,如果在文本中标签提示红色波浪线可以忽略。

<#list itemList as item>${item.index}
</#list>

图 6 列表增加list标签

第四步,由于程序中赋值的list为itemList,标签中作为item,所以第二步xml中的占位符${字符名

相关文章:

如何制作Word模板并用Java导出自定义的内容

1前言 在做项目时会按照指定模板导出word文档,本文讲解分析需求后,制作word模板、修改模板内容,最终通过Java代码实现按照模板自定义内容的导出。 2制作word模板 2.1 新建word文档 新建word文档,根据需求进行编写模板内容,调整行间距和段落格式后将指定替换位置留空。…...

ubuntu 安装配置samba服务器完整教程

ubuntu 安装配置samba服务器完整教程 问题描述解决方法郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Intel arm64 OS:ubuntu16.04 问题描述 在安卓驱动系统开发的过程中,会需要搭建服务器,又需要搭建samba服务器,下面就…...

【APP_TYC】数据采集案例天眼APP查_查壳脱壳反编译_③

是不是生活太艰难 还是活色生香 我们都遍体鳞伤 也慢慢坏了心肠 你得到你想要的吗 换来的是铁石心肠 可曾还有什么人 再让你幻想 &#x1f3b5; 朴树《清白之年》 查壳 工具介绍Frida-dexDump Frida-dexDump简介 Frida-dexDump是基于Frida的一个工具&…...

通过MobaXterm工具可视化服务器桌面

一、MobaXterm工具 MobaXterm是一款功能强大的远程连接工具&#xff0c;可以连接到各种类型的服务器&#xff0c;包括Linux、Windows和MacOS。支持多种协议&#xff0c;包括SSH、RDP、VNC和Telnet MobaXterm可以通过X11转发功能可视化服务器桌面。 二、MobaXterm工具可视化服务…...

ctf题目

目录 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 2.一道sql注入的题目&#xff0c;伪静态 3.限制只能本地访问。 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 但是一个点就是它这里去包含的那个文件名就是flag&#xff0c;而不是flag.php也不是f…...

git 更改仓库地址

背景&#xff1a; 项目本来在A仓库进行保管&#xff0c;研发已经开发一段时间了&#xff0c;现在切换到了新的仓库B&#xff0c;研发本地如何将仓库切换到B 解决&#xff1a; # 查看远端地址 git remote -v # 查看远端仓库名 git remote # 重新设置远程仓库 git remote s…...

GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。

demo案例 GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。下面我将逐个讲解其入参、出参、属性、方法以及API使用方式。 入参&#xff08;Input Parameters&#xff09;: GLTFExporter的主要入参是要导出的场景对象和一些导出选项。具体来说&#xff1a; s…...

消息队列经典应用场景

笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步&解耦 笔者曾经负责某电…...

阿里云Salesforce CRM功能差异列表 - Winter‘24

阉割版的阿里云Salesforce由于技术和监管等因素与国际版的Salesforce差距很大&#xff01; 一、Winter‘ 24版差异概况&#xff1a; 1.1. 主要版本&#xff1a; 阿里云上的 Salesforce 提供两个版本&#xff0c;用于生产用途的 CN 版本&#xff08;CN Edition&#xff09;和用…...

WIN10系统下误删除了用户重启无法登录

WIN10系统下误删除了用户重启无法登录 不小心在控制面板的用户组里面删除了当前的用户&#xff0c;在电脑重启后无论怎么输入密码都提示不正确不能登录。 在选择登录的界面同时点击 shift 和重启按钮&#xff1b;在进入的界面选择“疑难问题”&#xff1b;选择进入安全模式&…...

国内ip怎么来回切换:操作指南与注意事项

在数字化时代&#xff0c;互联网已经成为我们日常生活、学习和工作中不可或缺的一部分。然而&#xff0c;随着网络应用的不断深化&#xff0c;用户对于网络环境的稳定性和安全性要求也越来越高。其中&#xff0c;IP地址作为网络中的关键标识&#xff0c;其切换与管理显得尤为重…...

day72Html

常用标签&#xff1a; 分类&#xff1a; 块级标签&#xff1a;独立成行 行级标签&#xff1a;不独立成行&#xff0c;同一行可放多个行级标 注意网页显示时&#xff0c;忽略空白字符,(回车符&#xff0c;空格&#xff0c;tab制表符&#xff09; 一&#xff09;块级标签&#xf…...

C语言内存函数(超详解)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…...

2024年天津体育学院退役大学生士兵专升本专业考试报名安排

天津体育学院2024年退役大学生士兵免试专升本招生专业考试报名安排 一、报名安排 1.报名对象&#xff1a;免于参加天津市文化考试的退役大学生士兵&#xff08;已参加天津市统一报名且资格审核通过&#xff09; 2.报名时间&#xff1a;2024年4月4日9&#xff1a;00-4月5日17…...

linux bypy 定时备份到百度网盘

安装 # 先卸载安装的python-pip sudo yum remove python-pip# 下载get-pip.py文件 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py sudo python get-pip.py直接访问这个地址下载文件,再导入linux更快! https://bootstrap.pypa.io/pip/2.7/get-pip.py 连接 复制上面的连…...

星光/宝骏/缤果/长安 车机CarPlay手机操作破解教程V2.0版本(无需笔记本、无需笔记本、无需笔记本)

之前写了个1.0版本&#xff0c;由于太局限&#xff0c;需要用到笔记本才能操作&#xff0c;很多车友反馈不方便。特此出个手机版教程&#xff0c;简单easy&#xff0c;妈妈再也不用担心我搞不定啦 一、准备工作 先卸载车机上的autokit 或者 智能互联 app&#xff0c;这步很关…...

Spring Web MVC的入门学习(一)

目录 一、什么是 Spring Web MVC 1、MVC 定义 二、学习Spring MVC 1、项目准备 2、建立连接 2.1 RequestMapping 注解的学习 2.2 RequestMapping 使用 3、请求 3.1 传递单个参数 3.2 传递多个参数 3.3 传递对象 3.4 后端参数重命名&#xff08;后端参数映射&#xf…...

如何使用Java语言发票查验接口实现发票真伪查验、票据ocr

随着时代潮流的发展&#xff0c;企业也在寻找更加便捷、高效的办公模式&#xff0c;尤其是针对财务工作人员而言&#xff0c;繁琐的发票录入、查验工作占据了财务人员的大部分时间。对此&#xff0c;翔云提供了发票识别接口、发票查验接口&#xff0c;那么企业应当如何将这些接…...

CAPL实现关闭TCP连接的几种方式以及它们的区别

在讲正文前,我们有必要复习下关闭TCP连接的过程:四次挥手。 假设A和B建立TCP连接并进行数据传输,当A的数据发送完后,需要主动发起断开连接的请求: A发送FIN报文,发起断开连接的请求B收到FIN报文后,首先回复ACK确认报文B把自己的数据发送完,发送FIN报文,发起断开连接的…...

Git--08--Git分支合并操作

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Git分支合并操作案例流程客户端&#xff1a;GitExtensions操作步骤&#xff1a;A操作步骤&#xff1a;B操作步骤&#xff1a;C操作步骤&#xff1a;D操作步骤&#…...

深度学习训练中的种子设置

文章目录 深度学习训练中的种子设置1. 为什么需要设置随机种子2. 随机种子的设置及使用 深度学习训练中的种子设置 1. 为什么需要设置随机种子 在神经网络训练过程中&#xff0c;经常会通过随机的方式对一些数据进行初始化&#xff1a; 1、随机权重&#xff0c;网络有些部分…...

LLM:函数调用(Function Calling)

1 函数调用 虽然大模型能解决很多问题&#xff0c;但大模型并不能知晓一切。比如&#xff0c;大模型不知道最新消息(GPT-3.5 的知识截至 2021年9月&#xff0c;GPT-4 是 2023 年12月)。另外&#xff0c;大模型没有“真逻辑”。它表现出的逻辑、推理&#xff0c;是训练文本的统计…...

ssm 房屋销售管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm 房屋销售管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…...

MySQL使用ALTER命令创建与修改索引

索引&#xff08;index&#xff09;分类 单列索引&#xff0c;即一个索引只包含单个列&#xff0c;一个表可以有多个单列索引。组合索引&#xff0c;即一个索引包含多个列。 创建索引时&#xff0c;需要确保该索引是应用在 SQL查询语句的条件(一般作为 WHERE 子句的条件)。 实…...

54 npm run serve 和 npm run build 输出的关联和差异

前言 通常来说 我们开发的时候一般会用到的命令是 “npm run serve”, “npm run build” 前者会编译当前项目, 然后将编译之后的结果以 node 的形式启动一个服务, 暴露相关业务资源, 因此 我们可以通过 该服务访问到当前项目 后者是编译当前项目, 然后做一下最小化代码的优…...

iOS —— 初识KVO

iOS —— 初始KVO KVO的基础1. KVO概念2. KVO使用步骤注册KVO监听实现KVO监听销毁KVO监听 3. KVO基本用法4. KVO传值禁止KVO的方法 注意事项&#xff1a; KVO的基础 1. KVO概念 KVO是一种开发模式&#xff0c;它的全称是Key-Value Observing (观察者模式) 是苹果Fundation框架…...

什么是HTTP? HTTP 和 HTTPS 的区别?

文章目录 一、HTTP二、HTTPS三、区别参考文献 一、HTTP HTTP (HyperText Transfer Protocol)&#xff0c;即超文本运输协议&#xff0c;是实现网络通信的一种规范 在计算机和网络世界有&#xff0c;存在不同的协议&#xff0c;如广播协议、寻址协议、路由协议等等… 而HTTP是…...

微信小程序如何进行npm导入组件

文章目录 目录 文章目录 前言 一、安装node 二、微信小程序通过npm安装组件&#xff08;以Vant-weapp为例&#xff09; 一、Vant-weapp下载 二 、修改 app.json 三 、修改 project.config.json 四 、 构建 npm 包 前言 微信小程序使用npm导入有很多的教程&#xff0c;我…...

MySQL编程实战LeetCode经典考题

文章简介 本文主要收集了LeetCode上关于MySQL的一些经典考题。 后续也会陆续把所有经典考题补充完整。 175.组合两个表 175.组合两个表 解答&#xff1a; select p.FirstName as firstName, p.LastName as lastName,a.City as city, a.State as state from Person p l…...

发生播放错误,即将重试 jellyfin

上周在家里的小主机上部署了jellyfin&#xff0c;真香&#xff0c;手机安卓端使用无问题&#xff0c;于是今天准备在电视上安装一个 首先是直接安装的手机版客户端&#xff0c;操作卡顿&#xff0c;而且很多操作没法实现&#xff0c;于是去下了一个tv版本 安装上后发现&#…...

高平市规建设局网站/重庆网站搜索排名

导读在讯石第十八届光纤通讯市场暨技术专题研讨会上&#xff0c;全球信息与能源网络服务商江苏亨通光电股份有限公司光纤光缆资深专家高峰发表了主题为《光电复合缆的设计及应用方案探讨》的演讲报告&#xff0c;介绍5G网络新时代的光电复合缆设计要素和应用需求。ICCSZ讯在讯石…...

厦门做网站推广/网络推广人员

在 Java7引入的诸多新特性中&#xff0c;Fork/Join 框架无疑是重要的一项。JSR166旨在标准化一个实质上可扩展的框架&#xff0c;以将并行计算的通用工具类组织成一个类似java.util中Collection一样的包。其目标是使之对开发人员易用且易维护&#xff0c;同时该框架也旨在并行计…...

专门做游戏的网站/百度sem是什么意思

文章目录1. 前言2. 声明变量(1) var name xxx(2) name : xxx(3) 知识点类型推断的好处变量的重声明(4) 特点3. 作用域(1) 一个变量与其外层代码块中的变量重名(2) 引用变量的机制4. 变量类型相关(1) 类型断言类型断言表达式interface{}(x)x.(T)表达式结果(2) 类型转换int16转换…...

牛牛襄阳网站建设/有做网站的吗

写在最后不知道大家有没有发现&#xff0c;在一个行业做的久了&#xff0c;经常会在一些场合&#xff0c;不经意间遇到曾经的同事或熟人。我就有过一个类似经历&#xff0c;那时还是新人&#xff0c;同组一个同事天天对我吆五喝六&#xff0c;态度很不好。数年后&#xff0c;我…...

网站建站维护运营/seo整站优化哪家好

1 查询及匹配条件 1.1 问题 练习常见的SQL查询及条件设置 创建stu_info表&#xff0c;并插入数据 练习常见SQL查询及条件设置12 1.2 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;根据任务要求建立员工档案表stu_info&#xff08;如上个实验已创建&#xff0c;可将…...

网站建设的目标定位/今天的特大新闻有哪些

在vue-cli中如何实现兄弟组件之间的传值呢&#xff1f; 下面通过一个小例子来给大家说明一下vue-cli中兄弟组件之间的传值问题。 一、创建一个vue-cli项目 二、在该项目中创建两个兄弟组件:comp-one、comp-two comp-one的代码如下&#xff1a; <template><div cla…...