java生成word
两种方案
一、poi-tl生成word
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version>
</dependency>
public static void main(String[] args) throws Exception {String path = "C:/siefile/bak11/v9/";String templateUrl = path + "poitl-template.docx";String outUrl = path + "poi-tl测试.docx";Map<String, Object> data = new HashMap<>();data.put("detail", "用这些语言编写的程序和上面我们讲的命令行客户端");data.put("remark", "对mysql-connector-java源码的分析");RowRenderData row0 = Rows.of("姓名", "学历").textColor("FFFFFF").bgColor("4472C4").center().create();RowRenderData row1 = Rows.create("李四", "博士");data.put("testTable", Tables.create(row0, row1));XWPFTemplate render = XWPFTemplate.compile(templateUrl).render(data);render.writeToFile(outUrl);System.out.println("========done========");
}
word模板:注意模板里面的中文最好全部设置成微软雅黑或者宋体,不然会乱码

二、docx4j生成word
<properties><docx4j.version>8.3.10</docx4j.version>
</properties>
<dependency><groupId>org.docx4j</groupId><artifactId>docx4j-JAXB-Internal</artifactId><version>${docx4j.version}</version>
</dependency>
<dependency><groupId>org.docx4j</groupId><artifactId>docx4j-JAXB-ReferenceImpl</artifactId><version>${docx4j.version}</version>
</dependency>
<dependency><groupId>org.docx4j</groupId><artifactId>docx4j-export-fo</artifactId><version>${docx4j.version}</version>
</dependency>
public static void main(String[] args) throws Exception {String path = "C:/siefile/bak11/v9/";String templateFilePath = path + "docx4j-template.docx";String outFilePath = path + "docx4j测试.docx";// 加载word模板WordprocessingMLPackage wordPackage = WordprocessingMLPackage.load(new File(templateFilePath));MainDocumentPart documentPart = wordPackage.getMainDocumentPart();// 找到表格第二行,然后进行变量替换ClassFinder find = new ClassFinder(Tbl.class);new TraversalUtil(documentPart.getContent(), find);Tbl table = (Tbl) find.results.get(0);List<Object> tableContent = table.getContent();Tr templateTr = (Tr) tableContent.get(1);String templateTrXml = XmlUtils.marshaltoString(templateTr);List<Map> list = getTableData();for (Map map : list) {Tr newTr = (Tr) XmlUtils.unmarshallFromTemplate(templateTrXml, map);tableContent.add(newTr);}tableContent.remove(1);// 普通的变量替换Map<String, String> data = new HashMap<>();data.put("detail", "用这些语言编写的程序和上面我们讲的命令行客户端");data.put("remark", "对mysql-connector-java源码的分析");VariablePrepare.prepare(wordPackage);documentPart.variableReplace(data);Docx4J.save(wordPackage, new FileOutputStream(outFilePath));System.out.println("=========done========");
}private static List<Map> getTableData() {List list = new ArrayList();for (int index = 0; index < 5; index++) {HashMap map = new HashMap();map.put("name", "name_" + index);map.put("age", "age_" + index);list.add(map);}return list;
}
word模板:注意模板里面的中文最好全部设置成微软雅黑或者宋体,不然会乱码

相关文章:
java生成word
两种方案 一、poi-tl生成word <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version> </dependency> public static void main(String[] args) throws Exception {String…...
C语言中的结构体:揭秘数据的魔法盒
前言 在C语言的广阔天地中,结构体无疑是一颗璀璨的明珠。它就像是一个魔法盒,能够容纳各种不同类型的数据,并按我们的意愿进行组合和排列。那么,这个魔法盒究竟有何神奇之处呢?让我们一探究竟。 一、结构体的诞生&…...
Listener
文章目录 ListenerServletContextListenerServletContextAttributeListenerHttpSessionListenerHttpSessionAttributeListenerServletRequestListenerServletRequestAttributeListenerHttpSessionBindingListenerHttpSessionActivationListener Listener Listener 监听器它是 J…...
单细胞RNA测序(scRNA-seq)SRA数据下载及fastq-dumq数据拆分
单细胞RNA测序(scRNA-seq)入门可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. NCBI查询scRNA-seq SRA数据 NCBI地址: https…...
金蝶Apusic应用服务器 未授权目录遍历漏洞复现
0x01 产品简介 金蝶Apusic应用服务器(Apusic Application Server,AAS)是一款标准、安全、高效、集成并具丰富功能的企业级应用服务器软件,全面支持JakartaEE8/9的技术规范,提供满足该规范的Web容器、EJB容器以及WebService容器等,支持Websocket1.1、Servlet4.0、HTTP2.0…...
成都百洲文化传媒有限公司电商服务的新领军者
在当今数字化时代,电商行业正以前所未有的速度蓬勃发展。在这个大背景下,成都百洲文化传媒有限公司凭借其深厚的行业经验和精湛的专业技能,正迅速崛起为电商服务领域的新领军者。 一、专业引领,成就卓越 作为一家专注于电商服务的…...
从无到有开始创建动态顺序表——C语言实现
顺序表的概念 顺序表的底层结构是数组,对数组的封装,实现了常用的增删改查等接口。在物理结构和逻辑结构都是连续的,物理结构是指顺序表在计算机内存的存储方式,逻辑结构是我们思考的形式,顺序表和数组是类似的&#x…...
Unix 网络编程, Socket 以及bind(), listen(), accept(), connect(), read()write()五大函数简介
Unix网络编程是针对类Unix操作系统(包括Linux、BSD以及其他遵循POSIX标准的操作系统)进行网络通信开发的技术领域。网络编程涉及创建和管理网络连接、交换数据以及处理不同层次网络协议栈上的各种网络事件。在Unix环境中,网络编程通常涉及到以…...
【附下载】2024全行业数字化转型企业建设解决方案PPT合集
精品推荐,2024全行业数字化转型企业建设解决方案PPT合集,精品PPT源格式共21份。 以下是资料目录,如需下载,请前往星球获取: 1.制造业数字化转型解决方案及应用.pptx 2.医院数字化网络解决方案.pptx 3.食品饮料工厂数字…...
【QT+QGIS跨平台编译】056:【pdal_lepcc+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
点击查看专栏目录 文章目录 一、pdal_lepcc介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdal_lepcc介绍 pdal_lepcc 是 PDAL(Point Data Abstraction Library)的一个插件,用于点云数据的压缩。它基于 EPCC(Entwine Point Cloud Compression)算法,提供了对点…...
蓝桥集训之斐波那契数列
蓝桥集训之斐波那契数列 核心思想:矩阵乘法 将原本O(n)的递推算法优化为O(log2n) 构造1x2矩阵f和2x2矩阵a 发现f(n1) f(n) * a 则f(n1) f(1) * an可以用快速幂优化 #include <iostream>#include <cstring>#include <algorithm>using na…...
程序员的工资是多少,和曹操有莫大的关系
曹操是谁大家都知道了吧,他是三国时期的一个有名的大老板,谁知道曹操的工资是多少呢?这个其实也不好说,有时候曹操赚很多的钱,有时候也亏血本,甚至连脑袋都差点掉了。创业不容易啊,曹老板也是如…...
使用Element Plus
1. 官网安装 安装 | Element Plus (gitee.io) 安装: npm install element-plus --save 在main.ts中全局注册ElementPlus并使用 //加入element-plus import ElementPlus from element-plus; //加入element-plus样式 import element-plus/dist/index.css; import…...
单例(Singleton)设计模式总结
1. 设计模式概述: 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。 就像是经典的棋谱,不同的棋局,我们用不同的棋谱。"套路"经典的设计模式一共有…...
LeetCode每日一题之专题一:双指针 ——快乐数
快乐数OJ链接:202. 快乐数 - 力扣(LeetCode) 题目: 题目分析: 为了房便叙述,将「对于⼀个正整数,每⼀次将该数替换为它每个位置上的数字的平方和」这⼀个 操作记为 x 操作; 题目告诉我们&#…...
Docker Desktop 不支持 host 网络模式
先把这个结论的放在前面,直接访问链接就能看到官方文档中已经明确说了不支持。 参考链接:docker desktop for windows 不支持 host 网络模式 以前对于 docker 的网络模式,一直只是了解,没有亲自尝试过。结果今天在尝试 docker 的 …...
Linux网络编程二(TCP图解三次握手及四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)
文章目录 1、TCP三次握手(1) 第一次握手(2) 第二次握手(3) 第三次握手 2、TCP四次挥手(1) 一次挥手(2) 二次挥手(3) 三次挥手(4) 四次挥手 3、TCP滑动窗口4、TCP状态时序图5、多进程并发服务器6、多线程并发服务器 1、TCP三次握手 TCP三次握手(TCP three-way handshake)是TCP协…...
【云原生篇】K8S之Job 和 CronJob
在 Kubernetes (K8s) 中,Job 和 CronJob 是两种管理批处理任务的资源对象,它们用于控制短暂的一次性任务(Job)或定时执行的周期性任务(CronJob)。 Job 概念 Job 负责运行一个或多个 Pod,并确…...
PHP8.3-ZTS版本安装流程以及添加扩展
下载php-8.3.x.tar.gz至服务器并解压 [rootapisix-test php-8.3.4]# wget https://www.php.net/distributions/php-8.3.4.tar.gz进入目录执行编译命令,必须要带 --enable-zts 才能激活zts功能 [rootapisix-test php-8.3.4]# ./configure --prefix/usr/local/p…...
RabbitMQ系统监控、问题排查和性能优化实践
一、系统监控:RabbitMQ的各项性能指标及监控 Message Rates:消息率包含了publish,deliver/get,ack等方面的数据,反映了消息在系统中流转的情况。Queue Length:队列长度反映了系统当前的负载情况。如果队列…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
