• java导出word表格 行列合并


    生成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";
        WordUtils.generateWord(dataMap, templateName, "D://demo.docx");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    对模板做如下更改
    找到 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>
    
    • 1
    • 2
    • 3
    • 4
    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();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    在线零售多用户多门店连锁商城系统
    C语言:删除字符串的空格
    【SpringBoot】怎么在一个大的SpringBoot项目中创建多个小的SpringBoot项目,从而形成子父依赖
    【启明智显技术分享】SOM2D02-2GW核心板适配ALSA(适用Sigmastar ssd201/202D)
    小波变换学习笔记
    猿创征文 |【STM32】I2C协议完成温湿度检测
    HashMap 的底层数据结构是什么?
    【C语言必知必会 | 子系列第二篇】深入剖析顺序结构(2)
    80页4万字政务综合服务平台建设项目方案书(完整版)
    Games104现代游戏引擎笔记 网络游戏架构基础
  • 原文地址:https://blog.csdn.net/m0_49558851/article/details/125624318