生成word表格

新建模板如下(使用offic,不要用wps)

另存为xm格式

将文件放入resource/template目录下,复制一份,将后缀名改为ftl,也可以不复制直接改后缀名(这里忽视我其他的一些测试模板)

打开ftl文件,我们的占位符可能会错位,将他们放到一起(一定不要改动标签)

准备数据生成word

public static void main(String[] args) throws Exception {Student student1 = new Student("一年级","一班","张三","班长");Student student2 = new Student("一年级","一班","李四","班长");
//        Student student3 = new Student("一年级","二班","","班长");Student student4 = new Student("一年级","二班","赵六","班长");Student student5 = new Student("二年级","一班","","班长");List<Student> list = new ArrayList<>();list.add(student1);list.add(student2);
//        list.add(student3);list.add(student4);list.add(student5);Map<String,Object> dataMap = new HashMap<>();dataMap.put("students",list);String templateName = "student2.ftl";//这里注意一定得是doc,用doc可能会出现wps可以打开但是office打不开的情况,具体原因未知WordUtils.generateWord(dataMap, templateName, "D://demo.doc");
}

对模板做如下更改
找到 w:tr 这个标签,这个标签代表表格里的行,用 <#list> 标签将其包住。<#list> 标签代表一个集合,并会循环遍历这个集合。 as l 表示给这个集合取了个别名,students就是上面主方法中map的key。
在list这个标签中用 l.xxx 这种形式就表示取当前遍历的集合元素的属性值


运行主方法,可生成如下word表格

行列合并

到这一步表格虽然生成了,但是行列合并还没有实现
下面修改模板实现行合并

列合并

修改模板行列合并后再次生成word文档效果如下

引入pom和使用util

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Map;/*** @author: tanghaizhi* @CreateTime: 2022/6/27 11:38* @Description:*/
public class WordUtils {/*** 生成 word 文档方法** @param dataMap      要填充的数据* @param templateName 模版名称* @param fileName     要输出的文件路径* @throws Exception 抛出的异常*/public static void generateWord(Map<String, Object> dataMap, String templateName, String fileName) throws Exception {// 设置FreeMarker的版本和编码格式Configuration configuration = new Configuration(new Version("2.3.28"));configuration.setDefaultEncoding("UTF-8");// 设置FreeMarker生成Word文档所需要的模板的路径// configuration.setDirectoryForTemplateLoading(new File("/Users/xxx/Desktop/"));// 此处把模版文件都放在 resources 下的 templates 中configuration.setClassForTemplateLoading(WordUtils.class, "/templates");// 设置FreeMarker生成Word文档所需要的模板Template tem = configuration.getTemplate(templateName, "UTF-8");// 创建一个Word文档的输出流Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(fileName)), StandardCharsets.UTF_8));// FreeMarker使用Word模板和数据生成Word文档tem.process(dataMap, out);out.flush();out.close();}}

java导出word表格 行列合并相关推荐

  1. Java导出word表格|poi-tl

    目标 多级表头.分页.动态数据 实现 依赖: <!-- poi工具类--><dependency><groupId>com.deepoove</groupId ...

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

    1.word表格的模板 另存为xml格式: 将保存的xml改成.ftl 格式化一下xml,看看文件中的带有${}是否正确 如果出现这种情况,手动修改下(可复制上一个正确的改下名字) 2.Java代码 ...

  3. java导出word表格_使用PowerDesigner16.5 逆向数据库 导出word文档

    在上一篇<使用PowerDesigner16.5 逆向数据库生产表结构或导出word文档二>中,我们学会了使用PowerDesigner16.5怎么连接数据库,逆向生成表结构.有时候,我们 ...

  4. java poi 动态导出word表格带合并效果

    1.引入word导出所需依赖包 工作常用的excel,word导出,需要引入下面的6个主要包,和主要包依赖的其他包 ,可以看下面的表格进行依赖下载引入 这下面的两张图是主要包对应涉及到功能,可以按需要 ...

  5. java导出word表格

    List<ActivityMetting> list = activityMettingMapper.getWorkTotalDir(startDate,endDate,partyOrgN ...

  6. java_导出_word_[转载]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  7. python合并word表格单元格_python docx模块读取word表格遇到合并单元格时的处理

    python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表 遇到合并单元格时的处理 通 ...

  8. java导出word的几种方式

    目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过J ...

  9. java导出word纸张方向_java导出word的几种方式

    目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过J ...

最新文章

  1. 一张图看懂图像识别算法发展历史
  2. Ubuntu Server 14.04 下root无法ssh登陆
  3. 闭包函数python_Python--函数对象闭包函数
  4. 每个施加在HTML元素上的Angular Directive,运行时都会生成一个新的实例
  5. android 纯c/c++开发(转)
  6. c语言创建json串,Jquery通过JSON字符串创建JSON对象
  7. 【瑕疵检测】基于matlab瓶盖瑕疵检测【含Matlab源码 730期】
  8. 单元格中指定内容标红_你一直都不知道,键盘上“F4”在office中的强大功能
  9. 霍尔高斯计G81在地磁测量上的运用
  10. linux如何查看 GPU的信息
  11. WPS如何使参考文献对齐
  12. 仿淘宝网站基于html网页模板设计静态网页模板参考.rar(项目源码)
  13. excel对比两顺序不同的表格
  14. plc和变频器通讯接线图详解
  15. Distral: Robust multitask reinforcement learning.
  16. ckplayer html5 添加广告,ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持
  17. 爱奇艺“技术气氛组”上线!点击查收你的专属AI拜年新姿势
  18. 什么是API?有什么作用吗?
  19. Java中,Scanner键盘输入如何赋值给char类型变量
  20. TSMC28nm spice仿真

热门文章

  1. 微型计算机与显示器的线怎么,显示器与主机的连接线_显示器与主机怎么连接...
  2. php 抓取淘宝商品详情
  3. 【分库分表】ShardingSphere分库分表实战
  4. 学废了系列 - WebGIS vs WebGL图形编程
  5. 明明白白lua的协程(coroutine)
  6. JVM学习笔记07-垃圾回收
  7. Python中的魔法函数(__init__()和__ str__())
  8. V语言04语句表达式
  9. ibmx3400M3服务器装系统教程,免费安装系统!IBM x3400 M3不足1万2
  10. Spring Security和Angular教程