使用freemarker 导出word

使用freemarker导出复杂的excel表格、word文档         最近因为项目需要,需要导出复杂的excel表格。由于需要合并单元格以及样式处理,用poi导出显得比较困难。因为之前用freemarker导出过pdf/word文件,就想着能不能用其导出excel。经过一番实验,大功告成,真是比poi好用N多倍呀!废话少说,直接进入正题。        excel表格用编辑器打开后,可以发现它也是一个可编辑的标记性的格式,如同html页面里面的标签首... 阅读详情
使用过freemarker的肯定其见过如下情况:
Java代码 复制代码  收藏代码
  1. java.io.FileNotFoundException: Template xxx.ftl not found.  
java.io.FileNotFoundException: Template xxx.ftl not found.


模板找不到。可能你会认为我明明指定了文件,并且文件存在,但是为什么就是说找不到呢?
经过研究官方的API,原来freemarker在加载模板时,建议使用TemplateLoader,通过TemplateLoader指定从哪个目录开始加载模板,并且把模板加载在缓存中。

   API的TemplateLoader是一个接口,他有如下几个实现类:

Java代码 复制代码  收藏代码
  1. ClassTemplateLoader, FileTemplateLoader, MultiTemplateLoader, StringTemplateLoader, URLTemplateLoader, WebappTemplateLoader  
ClassTemplateLoader, FileTemplateLoader, MultiTemplateLoader, StringTemplateLoader, URLTemplateLoader, WebappTemplateLoader


   顾名思义,我们能从类名中猜想到freemarker的模板加载机制,举例说明两个:

1:FileTemplateLoader
  此是文件模板加载器,此即可以通过文件的绝对路径加载模板,如:

Java代码 复制代码  收藏代码
  1. TemplateLoader templateLoader=null;   
  2.            String path="";   
  3.               
  4.            //使用FileTemplateLoader   
  5.           templateLoader=new FileTemplateLoader(new File("项目根路径"));   
  6.           path="/WEB-INF/classes/com/xxx/tag/templates/page/xxx.ftl";   
  7.                           
  8.            cfg.setTemplateLoader(templateLoader);   
  9.            Template t=cfg.getTemplate(path,"UTF-8");  
 TemplateLoader templateLoader=null;
            String path="";
            
            //使用FileTemplateLoader
           templateLoader=new FileTemplateLoader(new File("项目根路径"));
           path="/WEB-INF/classes/com/xxx/tag/templates/page/xxx.ftl";
                        
            cfg.setTemplateLoader(templateLoader);
            Template t=cfg.getTemplate(path,"UTF-8");


2:ClassTemplateLoader
  此是通过指定类所在的目录来指定模板所在根路径,即指定类在哪个目录,那么这个目录就是加载模板文件的根目录,如下:

Java代码 复制代码  收藏代码
  1. Configuration cfg = new Configuration();   
  2.                
  3.             TemplateLoader templateLoader=null;   
  4.             String path="";   
  5.                
  6.             templateLoader=new ClassTemplateLoader(PageTag.class,"templates/page/");   
  7.             path="standardd.ftl";   
  8.                
  9.             cfg.setTemplateLoader(templateLoader);   
  10.             Template t=cfg.getTemplate(path,"UTF-8");  
Configuration cfg = new Configuration();
            
            TemplateLoader templateLoader=null;
            String path="";
            
            templateLoader=new ClassTemplateLoader(PageTag.class,"templates/page/");
            path="standardd.ftl";
            
            cfg.setTemplateLoader(templateLoader);
            Template t=cfg.getTemplate(path,"UTF-8");


此即表示比PageTag类所在的目录开始找,找这个目录下的templates/page/目录,

其它的加载器原理同上,

如果你是web项目,并且使用了spring,那么。你还可以通过spring来配置你模板文件的根目录,如下:


Java代码 复制代码  收藏代码
  1. <bean id="freemarkerConfig" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">   
  2.     <property name="templateLoaderPath" value="/WEB-INF" />   
  3.      <property name="freemarkerSettings">   
  4.         <props>          
  5.             <prop key="defaultEncoding">UTF-8</prop>          
  6.         </props>          
  7.     </property>   
  8. </bean>  
	<bean id="freemarkerConfig" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
		<property name="templateLoaderPath" value="/WEB-INF" />
		 <property name="freemarkerSettings">
			<props>       
				<prop key="defaultEncoding">UTF-8</prop>       
			</props>       
		</property>
	</bean>


此即表示从WEB-INF目录下开始找。 
java使用freemarker模板导出word(带有合并单元格)文档 前言:最近要做一个导出word功能,其实网上有很多的例子,但是我需要的是合并单元格的,可是查了好久都没有自己想要的。研究了几天其实挺简单的,在这儿我就简单的介绍一下吧!(此方法只是一种思路,借鉴者还有根据需求来具体写代码) 一、准备工作 1、jar包:freemarker-2.3.20.jar 2、模板:word.ftl 2.1:这个word.ftl怎么来? 首先准备一份要导出的word 阅读详情

相关推荐

java使用freemarker生成复杂的word文档

使用freemarker生成复杂的word文档,生成的文档支持office查看,但是使用国产中标普华貌似有问题,office、wps没有问题。

Java中利用freemarker导出word表格并合并单元格

1、word表格的模板 另存为xml格式: 将保存的xml改成.ftl 格式化一下xml,看看文件中的带有是否正确注:有可能出现{}是否正确 注:有可能出现是否正确注:有可能出现{标签。。。再},这种情况复制没有这种情况的到这就行了 2、Java代码 1、需要导入freemarker的包 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker&lt

weixin_43667830的博客 3874

freemarker 生成word,支持一个单元格生成多张图片

freemarker 生成word,支持一个单元格生成多张图片

java使用freemarker模板导出word,合并单元格,单元格内换行

之前使用XWPFDocument动态写入word,XWPFDocument不支持2003,word2003需要用HWPFDocument,HWPFDocument对于动态生成行效果不是很好,所以使用freemarker动态生成,生成的支持所有格式。 一、使用officeword建一个需要的表格,需要动态替换的可以先写上字母 二、另存为word2003xml格式 三、把后...

Z丶royAl的博客 2万+

GEOS-Chem笔记——模式下载安装+驱动数据+运行流程

看过我博客的会发现我写了很多CESM的笔记,但是说实话,平时科研我其实更多时候是GEOS-Chemuser。之所以写了很多CESM笔记,其实是因为不会,就边学边写。然后GEOS-Chem已经用比较熟了,所以也没想过做笔记啥的。但是我发现越来越多朋友私信我各种CESM问题,我觉得我可能给大家营造了一种我是CESM达人的错觉。感觉自己有点跑偏了呢。公平起见,我觉得我有必要补充点GEOS-Chem笔记。 GEOS-Chem是研究大气化学的人常用的大气化学传输模式,在全世界范围的大气化学研究组中被广泛使用。不过.

砍柴姑娘Jourosy的博客 1万+

爬虫-Playwright逆向小红书

【代码】爬虫-Playwright逆向小红书。

weixin_44201223的博客 2430

freemarker导出word文档(循环+合并单元格)

Step1. 制作模板 首先准备一份要导出的word.doc文档; 例如,这就是你要生成的效果: 如上图,行不确定,列是确定的,先不考虑合并单元格的问题,假设每个部分都只是一列的时候,制作相应模板,把需要导出的数据相应的插入到里面,{}到里面,到里面,{}就是个占位符,来放数据的,如下: 接下来使用wps将文档另存为xml格式,然后将xml文件的后缀名改成ftl 这样一来模板就制作完成了 St...

weixin_41701049的博客 6746

10分钟上手YOLOv11:最强姿态估计模型来了,代码开源,效果炸裂!

【10分钟玩转YOLOv11实时姿态估计】🚀 YOLOv11作为YOLO家族最新成员,在速度、精度和易用性上全面升级,尤其适用于姿态估计等复杂视觉任务。本文带您快速掌握: 1️⃣ 核心概念:姿态估计即识别人体17个关键点(如关节部位)并连接成数字骨架,是智能健身、体感游戏等应用的基础。 2️⃣ 技术优势: 超轻量级(最小仅2.9M参数) 极速推理(GPU仅1.7ms) 高精度(COCO mAP@50-95达50%) 3️⃣ 三步实操: ① 安装:pip install ultralytics ② 准备人物

weixin_41246802的博客 1788

【详细】springboot整合freemarker实现导出数据到word文档功能

【详细】springboot整合freemarker实现导出数据到word文档功能

sha1_mi的博客 2026

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 213

文档信息抽取技术:从非结构化文本到结构化信息的旅程

文档信息抽取技术是一种将非结构化文本转化为结构化信息的技术。这种技术可以从各类文档中自动提取出如实体、关系和其他重要信息,并将它们转化为方便计算机进一步处理和分析的格式。

INTSIG的博客 981

java导出word使用FreeMarker方式导出

public.docx文件就是需要导出的模板 1.pom依赖 2.将public.docx文件保存为public.xml 3.使用Visual Studio Code打开public.xml 需要格式化文档,这是Visual Studio Code的一个插件,不知道需要自己去安装插件。 4.格式化后文件,保存格式为public.ftl格式 5.打开文件,填写字段 ...

wjnjava的博客 1938

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5007

使用freemarker导出Word

使用freemarker导出Word 接上一篇,经常用到导出列表到Word中去,导出Word文档有好多方法,使用POI导出到Word中,也可以使用freemarker制作模板,生成Word文档,使用freemarker更加容易的导出各种格式的Word文档。 1.首先制作Word模板,对需要填充的内容用***表示,图片插入图片占位。 2.将word文档保存为xml类型,保存类型

Ang_DD的专栏 3390

华为OD机试双机位A卷 - 小明减肥 (C++ & Python & JAVA & JS & GO)

华为OD机试2025双机位A卷 小明减肥,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 710

HDMI接口及其在编程中的应用

在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文将介绍HDMI接口的基本原理以及如何在编程中使用HDMI接口。在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文介绍了HDMI接口的基本原理,并提供了使用Python编程语言和相关库实现HDMI接口应用的示例代码。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。

CodeByte的博客 803

springboot使用freemarker导出word

需要达到如下效果:根据需求导出word文档,在模板中渲染不通的参数图片。将占位符替换成freemarker变量。需要会使用freemarker语法。此处我的占位符为username。自行更改自己的依赖版本。

qq_43548590的博客 1663

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

使用freemarker 导出word文档

前言:今天有一个开发需求需要在页面上导出一个word文档,故用到了freemarker 一.什么是freemarker? FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 (百度答案) 也就是开发者...

Soup's Blog 1754

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java使用Freemarker导出Word文档

java使用Freemarker导出Word文档 思路:文档模板—>freemarker处理内容–>导出 一、准备模板 准备一个word文档: ${}——这是freemarker的表达式(大致都和thymeleaf和jsp差不多),后面通过java去设置title的值,待会在解释 具体表达式请参照学习官方网站:http://freemarker.foofun.cn/index.html word模板整好后,保存格式(两种方式,为了图个方便我就保存为xml): 另存为“ word 文档

小贰的博客 4286

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用FreeMarker导出word文档

在Java web项目中使用FreeMarker导出word文档 在最近的项目中,有需求需要导出word文档。经过一番研究,笔者发现导出word文档的方法的确是有很多种,比如使用Jacob、Apache POI、Java2Word、iText等等,但是都没有使用freemarker来...

191

SpringBoot使用Freemarker导出数据到word

1.创建Freemarker模板文件 1.1 新建word文档,输入模板数据; 1.2 将word文档另存为xml文件(必须是另存为,不是直接修改后缀名); 1.3 打开xml文件,将需要从数据库或动态获取的数据,使用${xx}符号替换,如:word文档上有“姓名:张三”,具体姓名需要从数据库动态获取,则将“张三”替换为“${name}”,name需要和Java代码中Map...

rhx_1989的专栏 1492

java使用freemarker导出word文档

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

hello_jee的博客 1248

freemarker word模板_如何使用java代码导出word

前言:导出word的需求其实在日常工作中用到的地方还不少,于是想写一篇文章好好记录一下,在导出之前,需要了解一下关于浏览器如何处理servlet的后台数据。具体可以了解一下http通信下载行为在servlet的实现。导出的工具类代码来源于网络,如有侵权可以联系我删除文章个人使用ftl作为word导出模板引擎,有很多模板引擎可以选,个人经过查阅资料发现ftl用的比较多,所以选择这一种码云地...

weixin_39585463的博客 703

Java使用freemarker动态导出word

Java使用freemarker动态导出word 适用于Java项目导出word文件,通过freemarker模板引擎动态填充word模板并导出。

zxg的博客 8615

使用freemarker解决easypoi导出Word表格错位的问题

工作中碰到了需要导出Word表格文档的需求,最简单的方式就是使用easypoi先配置好word模板文件(使用他的插值语法),准备好需要导出的数据直接导出即可。不过在测试时发现,使用循环插值语法导出表格中部分列表内容时会出现表格错位的问题。网上找了许多方法都不能解决(我甚至使用原生poi去写这一块循环生成的表格,捣鼓了一天发现导出来的跟用easypoi导出来的一模一样,错位问题也一模一样。

PARADDD的博客 1572
上一篇: 解析xml
下一篇: 遍历hashmap 两种方法
稀饭土豆的番茄
博客等级 码龄16年 13粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值