freemarker初体验,导出dox文档

freemarker导出docx文档 导出原理 docx是一个压缩包,我们新建一个docx文档,添加一些内容,后缀名改为.zip进行解压 其中word下面结构如下 其中document.xml主要就是文档内容。 打开document.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanv 阅读详情

1.Freemarker简介

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

2.使用freemark导出doc文档

2.1设置ftl文件模板

新建一个doc文档,内容如下

然后另存为xml文件,如图:

使用文本编辑器打开xml文件,找到占位符 ${username} 和 ${tool} 确保不被xml标签分割,除此之外,还有一个很长的base64编码的字符串文本,这个就是图片,我们把这个文本删掉,使用 ${imgStr} 替换。如图:

最后修改xml后缀名称为ftl

2.2 编码导出doc文档

package com.yuwen;

import sun.misc.BASE64Encoder;

import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * className: Domain <br/>
 * packageName:com.yuwen <br/>
 *
 * @author yuwen <br/>
 * @date: 2019-11-12 21:50 <br/>
 */
public class Domain {

    public static void main(String[] args) throws Exception {
        // 模板所在文件夹
        File dir = new File(Domain.class.getClassLoader().getResource("").getPath() + "/ftl");
        // 图片路径
        String imgpPath = Domain.class.getClassLoader().getResource("").getPath() + "img/timg.jpg";
        Map<String, Object> dataMap = new HashMap<>();
        dataMap.put("username", "玉皇大帝");
        dataMap.put("tool", "freemaker");
        dataMap.put("imgStr", getImgStr(imgpPath));
        ExportDoc.export(dataMap, dir, "新建 Microsoft Word 文档.ftl");
    }

    /**
     * 获取指定文件图片的base64字符串
     *
     * @param imgPath
     * @return
     */
    public static String getImgStr(String imgPath) throws Exception {
        FileInputStream fileInputStream = new FileInputStream(new File(imgPath));
        byte[] b = new byte[fileInputStream.available()];
        fileInputStream.read(b);
        BASE64Encoder base64Encoder = new BASE64Encoder();
        return b.length == 0 ? "" : base64Encoder.encode(b);
    }
}

package com.yuwen;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.Map;

/**
 * className: ExportDoc <br/>
 * packageName:java.com.yuwen <br/>
 *
 * @author yuwen <br/>
 * @date: 2019-11-12 21:43 <br/>
 */
public class ExportDoc {

    public static void export(Map<String, Object> dataMap, File dir, String fileName) throws Exception {

        // 1.新建配置对象,设置版本号,版本号与pom中引入的一致
        Configuration configuration = new Configuration(new Version("2.3.28"));
        // 2.设置字符集
        configuration.setDefaultEncoding("UTF-8");
        // 3.设置加载模板的文件夹(.ftl模板文件所在文件夹)
        configuration.setDirectoryForTemplateLoading(dir);
        // 4.获取模板并且设置字符集
        Template template = configuration.getTemplate(fileName, "UTF-8");
        // 5.构造目标文件的输出流
        File file = new File("D:/" + fileName.substring(0, fileName.lastIndexOf(".")) + ".doc");
        Writer writer = new FileWriter(file);
        // 6.构建doc文档
        template.process(dataMap, writer);
        System.out.println("构建完成,文件路径:" + file.getPath());

    }
}

 以上

案例代码:https://download.youkuaiyun.com/download/Yuwen_forJava/11973398?spm=1001.2014.3001.5503

没积分打赏得留下qq邮箱即可

使用freemarker导出word文档,支持图文导出 本篇博客采用freemarker导出word文档,仅供大家参考。 实现思路: 1.将word模板文件转换成xml格式 2.将xml中需要替换的文字或图片数据用${xxx}替换(不懂的去了解一下freemarker语法) 3.word是通过base64这个算法将图片转换成xml格式,所以将我们自己的图片导入word的时候需要使用到这个算法 阅读详情

相关推荐

java使用freemarker模板导出word(docx格式;流形式输入输出)

前言:好久没有更文了,最近又再做关于导出word文档项目。其实网上很多有关导出的博文,多数是大同小异的,但是还远远不能满足我的需求。之前写过一篇导出word的文章,那个还不太成熟,随着业务的增加,肯定有了不小的变化,所以今天这篇文章索性就叫续集吧,希望可以帮到大家!上一篇写的是有关doc格式的。具体详情请访问:点击打开链接,在这里说明一下上篇存在的一些问题:1、记得上篇说到获取模板的时候,是通过n...

耶戈尔-黑莱的博客 1万+

推荐:Dox - 自动化文档编写利器

推荐:Dox - 自动化文档编写利器 在软件开发中,高质量的API文档是至关重要的,但手动编写和维护这些文档往往耗时且容易出错。这就是Dox出现的原因。Dox是一个智能的文档生成工具,它可以从你的Rspec控制器/请求规范中自动化地创建API文档,并以OpenApi格式呈现,使得阅读和理解更加直观。 项目介绍 Dox致力于简化文档工作流程,它基于Rails应用,能够将Rspec测试输出转换为Ope...

gitblog_00018的博客 707

FreeMarker结合Java实现Word文档导出方案

FreeMarker是一个用于生成文本输出的Java类库,它采用模板和数据模型的方式,将动态数据与静态模板分离,生成各种文本内容,如HTML、XML、源代码等。FreeMarker通过预定义的模板文件结合数据模型来构建最终文档,这一点在需要大量动态内容输出的场景中非常有用。Apache POI库是处理Microsoft Office文档的一个强大而灵活的Java库。它能够读取和创建Microsoft Office格式的文件,包括Excel、Word、PowerPoint和Outlook等。

weixin_34885746的博客 1209

Dox:Haxe文档生成器的强大工具

Dox:Haxe文档生成器的强大工具 项目介绍 Dox 是一个由 Haxe 基金会开发的文档生成器,专为 Haxe 编程语言设计。它能够自动生成清晰、结构化的 API 文档,广泛应用于多个知名 Haxe 项目中,如 Haxe、OpenFL、HaxeFlixel、Heaps、HaxePunk 和 Kha 等。Dox 不仅支持多种文档格式,还提供了丰富的自定义选项,使得开发者能够轻松创建符合项目需求的...

gitblog_00538的博客 847

Java基于Freemarker实现Word文档导出完整示例

#macro>如果内置指令不够用,你还可以注册自定义Java类作为FTL指令,实现复杂逻辑封装。注册并使用:<@formatDate date="20250405" format="yyyy年MM月dd日" />优势很明显:- 将复杂格式化、加密、权限校验等逻辑移出模板;- 提升安全性与性能;- 实现真正的MVC分离;- 支持Spring Bean注入整合;

weixin_33582089的博客 369

freemarker导出doc及docx

freemarker转doc及docx说明: 1.本地配置有maven环境,修改FreeMarkerUtil的main中的本地文件路径参数,然后执行main方法即可导出docx文件

java利用freemarker动态生成word文档及动态表格

java 利用 freemarker 动态生成 word 文档及 动态表格

weixin_44005802的博客 7160

软件测试——测试日志.doc

测试都有一个结果,而这些结果对于软件质量保证活动来说是十分重要的,因此应该将这些结果有序地记录下来,这就是测试日志模板所要解决的问题。

FreeMarker 入门示例及操作手册

1 FreeMarker 简介 1.1 java模板引擎之一 FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的...

qqxhb 资源共享 851

Word2010显示第几页共几页

Word2010显示第几页共几页,详细的分页页码实现。

量化数据采集实战:从App接口逆向到Python爬虫系统构建

数据采集是量化分析和自动化策略的基石,其核心原理是通过程序模拟客户端行为,从目标服务器获取结构化数据。在金融科技领域,高效、稳定的数据采集能力直接决定了策略研究的深度和时效性。面对金融App常见的反爬机制,如请求签名和身份认证,工程师需要掌握网络协议分析、接口逆向与模拟请求等关键技术。这些技术不仅能用于获取市场情绪、资金流向等高频数据,更是构建个人量化研究基础设施、实现从主观看盘到客观数据分析转型的关键一步。本文以实战为例,深入剖析了如何系统性地逆向分析数据接口、破解签名算法,并最终构建一个包含代理IP池与

weixin_29032489的博客 1484

FreeMarker生成word文档

这里写目录标题利用FreeMarker生成word文档简介创建模版文件处理普通文本处理表格处理勾选框创建Java项目相关依赖工具类 利用FreeMarker生成word文档 简介 最近项目中有需要生成word文档给前端下载的需求,这里使用 FreeMarker 来快速生成。 主要步骤为: 将 word 中需要填充的数据用占位符${变量名}替换。 另存为 .xml 的格式,并检查看格式是否有误(主要看占位符有没被分割开来)。 将后缀.xml改成.ftl即可。 创建模版文件 效果图: 模版文件: 处理普

weixin_45103378的博客 1万+

从零解析特斯拉线圈:谐振变压器的核心原理与DIY实践

本文深入解析特斯拉线圈的工作原理与DIY实践,从LC振荡电路到电磁耦合,详细介绍了谐振变压器的核心原理。通过材料清单、绕制技巧和安全指南,帮助爱好者从零开始打造迷你闪电发生器,体验高压电子实验的独特魅力。

weixin_33670786的博客 494

java使用freemarker导出word(标准格式版)

java使用freemarker导出标准格式word文档,导出docx格式word文档

兴国-为梦想而战 1万+

计算机视觉——多视图几何

多视图几何1.前言1.1 多视图几何概念2. 基本原理2.1 对极几何2.2 基础矩阵2.2.1 基础矩阵推导2.2.2 求解基础矩阵3. 实验过程3.1 实验数据准备3.2 实验代码3.3 实验结果及分析4. 实验中遇到的问题 1.前言 1.1 多视图几何概念 多视图几何是利用在不同视点所拍摄图像间的关系,来研究照相机之间或者特征之间关系的一门科学。 多视图几何(Multiple View ...

RuiMa的博客 7715

UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount()【已解决】

UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount()【已解决】

围炉夜敲的博客 1万+

java使用freemarker导出word文档

使用freemarker导出word文档 最近的项目中,在导出word文档中遇见了一些问题,由于之前的导出word是导出的doc格式的word文档,但是由于使用的freemarker技术,导出的word文档其实就是xml文件,只是将文件后缀名改为.doc其实实际上还是xml,所以在使用某些工具打开时,遇到无法解析,或者打开后直接显示xml的问题。 所以这里解决这个问题的办法,是导出docx格式的文...

hello_jee的博客 1248

灰度重心法实战:从原理到MATLAB代码实现激光条纹中心线提取

本文详细介绍了激光条纹中心线提取的核心方法——灰度重心法。通过物理类比阐释其原理,并提供从图像预处理到MATLAB代码实现的完整实战教程。文章重点解析了算法流程、关键参数调整及常见问题避坑指南,帮助读者快速掌握这一机器视觉与三维测量中的基础且高效的技术。

cake8的博客 462

java使用freemarker导出word

java使用freemarker生成word文档,生成docx格式文档

兴国-为梦想而战 6920

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2241

RH850从0搭建Autosar开发环境系列讲解 - 总目录

Davinci Autosar实战开发从0构建开发能力。OS,COM,DCM,BSWMM,ECUM,VLINK,XCP,MEMMAP等模块配置,带你熟悉运行的autosar代码,包括MICROSAR的启动运行,使用GreenHills生成运行的hex。

weixin_42412049的博客 1万+

使用freemarker利用模板导出文档

本文旨在对在使用freemarker创建模板导出文档是遇到的一些错误及解决方案做个记录。 现在网络上有很多这样的代码,随便一查就有很多。但是为了方便大家使用我这里就在网上随便摘抄一些,方便使用。 首先创建模板。 1)使用office软件创建一个文档,文档设置好自己的样式、颜色等格式。 2)在你要插入值的地方定义好占位符,占位符格式:${你的变量} ps 这个变量的名字你要记好,这是你在使用模板的...

♥鈺♡鉝♡錡♥ 357

华为OD机试2025A卷 - 用户调度问题(Java & Python& JS & C++ & C )

题目要求每个用户依次选择当前所能选择的最小资源消耗策略,并且若有多个策略的资源消耗相同,则选择最后一个策略。每个用户的选择是独立的,只考虑该用户的策略和相邻用户的约束,不考虑整个调度序列的全局资源消耗。每个用户根据自己的当前状态(即自己的三种选择的资源消耗)做出局部最优选择:在当前可选的策略中,选择消耗最小的那个。如果有多个最小值,则选择最后一个(根据题意)。这一选择是局部的最优,即在当下最有利的选择,但并不保证最终的整体系统资源消耗是最小的。

算法大师! 1万+

导出word文档生成docx格式,包含freemarker遍历多张图片

为了导出docx格式看了等多文档,最后做个总结依赖包用到dom4j和freemarker,最为方便。 <!-- https://mvnrepository.com/artifact/freemarker/freemarker --> <dependency> <groupId>freemarker</groupId> <ar...

RyanJJ_的博客 2232

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JAVA使用Apache POI动态导出Word文档

1、需要的环境2、创建模板3、书写java类4、测试。

qq_45087487的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spring Boot 和 Freemarker 实现 Word 文档的动态导出

通过以上步骤,我们已经了解了如何利用 Spring Boot 和 Freemarker 生成带有样式的 Word 文档。这种方案既简单又高效,非常适合需要频繁生成报告的应用场景。如果需要更高级的功能,如图表生成或者复杂的页面布局,可以进一步探索 Apache POI 的其他功能。

心猿意码 885

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: spring boot集成swagger
下一篇: logback集成springboot框架、集成ssm框架小结
Yuwen_forJava
博客等级 码龄9年 28粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值