Java通过freemark创建word文档

news2024/11/19 4:34:04

创建freemarker模板

创建Freemarker模板:在您的Java项目中,创建一个Freemarker模板文件(例如template.ftl),其中包含您想要生成的Word文档的内容。您可以在模板中使用Freemarker的标记来插入动态内容。

<!DOCTYPE html>
<html>
<head>
    <title>表格示例</title>
</head>
<body>
<table border="1">
    <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
    </tr>
    <#list users as user>
        <tr>
            <td>${user.name}</td>
            <td>${user.age}</td>
            <td>${user.gender}</td>
        </tr>
    </#list>
</table>
</body>
</html>

添加pom依赖

添加Freemarker依赖:首先,您需要将Freemarker库添加到您的Java项目中。您可以通过在Maven或Gradle中添加依赖项来实现。例如,在Maven项目中,您可以在pom.xml文件中添加以下依赖项:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version> <!-- 最新版本请查看Maven中央存储库 -->
</dependency>


编写Java代码

import com.norintech.noah.de.common.Constant;
import com.norintech.noah.de.manager.dto.ExchangerProtocolNodeDto;
import com.norintech.noah.de.manager.entity.ExchangerProtocol;
import com.norintech.noah.de.manager.entity.ExchangerProtocolNodeDataItem;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.apache.commons.lang3.StringUtils;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.FileWriter;


public class WordDocumentGenerator {

    public static void main(String[] args) {
        try {
            // 创建Freemarker配置
            Configuration configuration = new Configuration(Configuration.VERSION_2_3_0);
            configuration.setClassForTemplateLoading(WordDocumentGenerator.class, "/"); // 设置模板文件的加载路径

            // 加载模板
            Template template = configuration.getTemplate("template/protocol.ftl");

            // 准备数据
            List<Map<String, Object>> users = new ArrayList<>();
            Map<String, Object> user1 = new HashMap<>();
            user1.put("name", "Alice");
            user1.put("age", 25);
            user1.put("gender", "Female");
            users.add(user1);

            Map<String, Object> user2 = new HashMap<>();
            user2.put("name", "Bob");
            user2.put("age", 30);
            user2.put("gender", "Male");
            users.add(user2);

            // 填充模板
            Map<String, Object> data = new HashMap<>();
            data.put("users", users);

            // 生成Word文档
            File outputFile = new File("D:\\data\\freeoutput.doc");
            Writer writer = new FileWriter(outputFile);
            template.process(data, writer);
            writer.close();

            System.out.println("Word document generated successfully!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

生成结果

 freemark可以直接用word另存为的html文件做模板,通过这种方式可以自动生成复杂的word文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring如何通过三级缓存解决循环依赖问题?

目录 一、什么是Spring 二、循环依赖问题 三、三级缓存机制 四、如何通过三级缓存解决循环依赖问题 一、什么是Spring Spring框架是一个开源的Java应用程序开发框架&#xff0c;提供了一种全面的、一致的编程模型&#xff0c;用于构建企业级应用程序和服务。它由Rod Johnso…

如何压缩高清PDF文件大小?将PDF文件压缩到最小的三个方法

PDF格式是一种非常常用的文档格式&#xff0c;但是有时候我们需要将PDF文件压缩为更小的大小以便于传输和存储。在本文中&#xff0c;我们将介绍三种PDF压缩的方法&#xff0c;包括在线PDF压缩、利用软件PDF压缩以及使用WPS缩小pdf。 首先&#xff0c;在线PDF压缩是最常用的方…

人体大脑神经元运行模拟器!让你直观体验大脑的运行方式

首先&#xff0c;宣布沾花把玖正式回归&#xff01;&#xff01;&#xff01; 最近沾花在网上看到一个神奇的网站&#xff1a;A Neural Network Playground 经过沾花的亲手测试&#xff0c;发现这玩意儿能模拟人体大脑神经元的运行&#xff01; 下面是网址&#xff1a; A N…

干货!机器视觉基础知识汇总

现如今,中国已经成为世界机器视觉发展最为活跃地区,应用范围涵盖了工业、农业、医药、军事、航天、气象等国民经济各个行业。虽然机器视觉的成长速度非常快,但是还是有很多人对机器视觉并不了解,今天我们来了解下机器视觉。 机器视觉就是用机器代替人眼来做测量和判断。机器…

一条自由游动的鲸鱼

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>鲸鱼</title><style>#canvas-container {width: 100%;height: 100vh;overflow: hidden;}&l…

Linux(二)---------网络命令学习(ifconfig命令)

1.ifconfig命令 用于配置网卡ip地址信息&#xff0c;等网络参数信息&#xff0c;或者查看显示网络接口信息&#xff0c;类似于windows的ipconfig命令&#xff0c;还能够临时性的配置ip地址&#xff0c;子网掩码&#xff0c;广播地址&#xff0c;网关信息等。 注意ifconfig命令…

配置GIt账号、配置公钥

1.设置账号和邮箱 打开终端输入以下命令&#xff1a; git config --global --unset-all user.name git config --global --unset-all user.email然后输入以下命令来设置新的账号和邮箱&#xff1a; git config --global user.name "your_username" git config --glo…

整理了250个shell脚本,拿来即用!

无论是系统运维&#xff0c;还是应用运维&#xff0c;均可分为“纯手工”→ “脚本化”→ “自动化”→“智能化”几个阶段&#xff0c;其中自动化阶段&#xff0c;主要是将一些重复性人工操作和运维经验封装为程序或脚本&#xff0c;一方面避免重复性操作及风险&#xff0c;另…

【音视频SDK测评】线上K歌软件开发技术选型

摘要 在线K歌软件的开发有许多技术难点&#xff0c;需考虑到音频录制和处理、实时音频传输和同步、音频压缩和解压缩、设备兼容性问题等技术难点外&#xff0c;此外&#xff0c;开发者还应关注音乐版权问题&#xff0c;确保开发的应用合规合法。 前言 前面写了几期关于直播 …

qt系列-qt6在线安装慢的问题

.\qt-unified-windows-x64-online.exe --mirror https://mirrors.aliyun.com/qt/下载速度飞快

剑指offer19.正则表达式

这道题我一看就有印象&#xff0c;我室友算法课设抽到这题&#xff0c;他当时有个bug让我帮他看一下&#xff0c;然后我就大概看了一下他的算法&#xff0c;他是用动态规划写的&#xff0c;用了一个二维数组&#xff0c;然后我就试着按照这个思路去写&#xff0c;想了一会还是没…

输入筛选框搜索

文章目录 输入筛选框实现效果图需求前端工具版本添加依赖main.js导入依赖 代码 后端代码对应 sql对应 mapper.xml 文件的动态 sql 输入筛选框实现 效果图 需求 通过筛选框&#xff0c;选择公司&#xff0c;传入后端&#xff0c;后端根据公司名称去文章的内容中进行模糊查询 …

flask响应

介绍 在flask中&#xff0c;响应的方式有很多种&#xff0c;可以是普通字符串、json数据、html文本、模板或者是重定向。视图函数的返回值会自动转换为一个响应对象 当响应对象是字符串时 根据这个字符串和缺省参数自动生成一个用于返回的 响应对象 app.route("/test&q…

使用Debate Dynamics在知识图谱上进行推理(2020)7.31+8.1+8.2

使用Debate Dynamics在知识图谱上进行推理 摘要介绍背景与相关工作我们的方法状态action环境policiesDebate Dynamics裁判奖励报酬最大化和培训计划 实验数据集度量和评估方案结果 总结 摘要 我们提出了一种新的基于 Debate Dynamics 的知识图谱自动推理方法。 其主要思想是将…

2023年DevOps和云趋势报告!

要点 ●云创新已从革命性阶段转变为演进性阶段&#xff0c;重点是迁移和重新架构工作负载。云空间已发展为提供对可扩展资源和托管服务的按需访问&#xff0c;强调简化交互并减少团队的认知负担。 ●人工智能 (AI) 和大型语言模型 (LLM) 可以通过解决认知过载问题并支持即时管…

疯狂收割offer,全网最全接口测试面试题+答案,面试必刷题...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试题&#xff1…

网络安全公司校招面试会面试那些问题?

面试官会从那些方面去考察面试者&#xff1f; 以某安全公司的技术支持工程师岗位为例 面试官可能会从网络技术、操作系统、数据库、项目经验、语言表达以及个人擅长技能方面展开 面试官会提出那些问题来考查面试者呢&#xff1f; 网络基础方面的问题&#xff1a;请介绍一下…

Gitlab CI/CD笔记-第一天-GitOps和以前的和jenkins的集成的区别

一、GitOps-CI/CD的流程图 简单解释&#xff1a; 1.提交代码 2.编译构建 3.测试 4.部署 二、gitlab的实现 1、Runer 1.这个就是jenkins里的worker-slave的角色&#xff0c; 2.git-lab server 下发任务&#xff0c;Runner执行。 3.这个R…

JZ67 把字符串转换成整数(atoi)

目录 一、题目 二、易错点代码 一、题目 把字符串转换成整数(atoi)_牛客题霸_牛客网 (nowcoder.com) 二、易错点代码 int类型运算可能出现溢出的现象&#xff0c;因此可采用将int类型数据的运算转换成long long类型 class Solution { public:int is(long long result)//用…

Emacs之编译系统文件cc-mode.el.gz(一百二十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…