首页 > 其他分享 >springboot-实现excle文件导出的单元格相同内容合并

springboot-实现excle文件导出的单元格相同内容合并

时间:2024-10-24 17:22:34浏览次数:7  
标签:单元格 springboot get writer List excle data asList

导出excle文件中的单元格有些需要合并如何操作

例如:左边的表格想合并单元格成右边的表格更加便于观看

         

 一、依赖文件

 <!-- excle操作-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.8</version>
        </dependency>

        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.10</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.1</version>
        </dependency>

 二、代码

@RequestMapping("/merge")
public class MergeController {

    @RequestMapping(value = "/excleExport" )
    @ResponseBody
    public void csvExport(HttpServletResponse response){
        //表头
        List<String> headerList = Arrays.asList("编号", "姓名");
        //通过工具类创建writer,默认创建xls格式
        ExcelWriter writer = ExcelUtil.getWriter();
        //写入表头
        writer.writeHeadRow(headerList);
        //组织数据
        // 组织数据
        List<List<Object>> data = new ArrayList<>();

        List list1 = Arrays.asList("001","张三");
        List list2 = Arrays.asList("001","张三");
        List list3 = Arrays.asList("001","张三");
        List list4 = Arrays.asList("002","李四");
        List list5 = Arrays.asList("002","李四");
        List list6 = Arrays.asList("003","王五");
        data.add(list1);
        data.add(list2);
        data.add(list3);
        data.add(list4);
        data.add(list5);
        data.add(list6);

        //一次性写出内容,使用默认样式,强制输出标题
        writer.write(data,true);
        //设置表格宽度自动
        writer.autoSizeColumnAll();

        //获取底层的Workbook和Sheet对象
        Workbook workbook = writer.getWorkbook();
        Sheet sheet = workbook.getSheetAt(0);

        //合并相同编号的单元格
        int startRow = 1; // 数据开始行(跳过表头)
        for (int i = 1; i < data.size(); i++) {
            if (!data.get(i).get(0).equals(data.get(i - 1).get(0))) {
                System.out.println(data.get(i).get(0));
                System.out.println(data.get(i - 1).get(0));
                if (startRow < i) {
                    // 合并编号列  前两个参数起始行和结束行  后两个参数起始列和结束列
                    sheet.addMergedRegion(new CellRangeAddress(startRow, i , 0, 0));
                    // 合并姓名列
                    sheet.addMergedRegion(new CellRangeAddress(startRow, i , 1, 1));
                }
                startRow = i+1;
            }
        }

        //response为HttpServeltReponse对象
        response.setContentType("application/vnd.ms-excel;charset=utf-8");

        response.setHeader("Content-Disposition","attachment;filename=1.xls");
        ServletOutputStream out= null;
        try{
            out = response.getOutputStream();
            writer.flush(out,true);

        }catch (IOException e){
            e.printStackTrace();
        }finally {
            //关闭writer,释放内存
            writer.close();
        }
        IoUtil.close(out);
    }
    
}

 三、postman调用

下载后就是开头合并单元格后的效果

 源码获取方式(免费):
(1)登录-注册:http://resources.kittytiger.cn/
(2)搜索:springboot导出excle+导出的excle单元格合并

 

标签:单元格,springboot,get,writer,List,excle,data,asList
From: https://www.cnblogs.com/yclh/p/18500011

相关文章

  • SpringBoot入门到精通(十三)日志:别小看它,否则吃亏的是自己!学会你也可以设计架构
    别小看他,当你面对的时候,就会知道,多么痛的领悟!如何在SpringBoot中使用Logback记录详细的日志?整合LogBack,Log4J...等,是不是很多方法!但需要注意,我讲的可能和你是一样的,但也是不一样的。常见日志级别:高---低排列TRACE:描述:最详细的日志级别,通常用于开发和调试阶段......
  • 基于SpringBoot和Vue的地方美食分享与推荐网站的设计与实现(源码+定制+开发)地方美食推
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • SpringBoot助力学生评奖评优系统的现代化
    3系统分析3.1可行性分析通过对本学生评奖评优管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本学生评奖评优管理系统采用SSM框架,JAVA作为开发语言,是基于WEB平......
  • springboot068桂林旅游景点导游平台(论文+源码)_kaic
    桂林旅游景点导游平台摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了桂林旅游景点导游平台的开发全过程。通过分析桂林旅游景点导游平台管理的不足,创建了一个计算机管理桂林旅游景点导游平台的方案。文章介绍了桂林旅游......
  • 基于springboot+vue的Hadoop的高校教学资源平台的设计与实现(源码+lw+部署文档+讲解等
    课题摘要基于SpringBoot+Vue的Hadoop高校教学资源平台是一个功能强大的教学资源管理系统,结合了先进的技术架构和丰富的功能模块,为高校教学提供了高效、便捷的资源共享和管理平台。以下是该平台的设计与实现方案,包括源码、LW(LiveWire)、部署文档和讲解等内容。一、......
  • 基于Hadoop的热门游戏推荐系统的设计springboot+vue的项目(源码+lw+部署文档+讲解等)
    课题摘要基于SpringBoot+Vue的Hadoop热门游戏推荐系统可以为游戏玩家提供个性化的游戏推荐服务。以下是该系统的设计与实现方案:一、系统功能用户管理用户注册与登录:支持多种注册方式,如手机号码、邮箱等。用户登录后可以管理个人信息。用户偏好设置:用户可以设置......
  • 基于springboot+vue的Hadoop的奶茶数据平台系统(源码+lw+部署文档+讲解等)
    课题摘要基于SpringBoot+Vue的Hadoop奶茶数据平台系统可以为奶茶行业提供全面的数据管理和分析解决方案。以下是该系统的设计与实现方案:一、系统功能数据采集与存储从各种数据源(如门店销售系统、社交媒体、市场调研等)采集奶茶相关数据。使用Hadoop分布式文件......
  • 基于springboot+vue的Hadoop的环境质量数据修复系统设计与实现(源码+lw+部署文档+讲解
    课题摘要基于SpringBoot+Vue的Hadoop环境质量数据修复系统是一个用于处理和修复环境质量数据的强大工具。以下是该系统的设计与实现方案,包括源码、LW(LiveWire)、部署文档和讲解等内容。一、系统概述环境质量数据对于环境保护和决策制定至关重要。然而,由于各种原因......
  • Springbootssm校园问答系统60u4u
    Springbootssm校园问答系统60u4u本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:学生,教师,代理,问题分类,问题信息,教师答疑,通知公告,学生咨询开题报告内容一、课题名称基于SpringBoot与SSM框......
  • Springboot茶饮店会员信息管理系统eskte
    Springboot茶饮店会员信息管理系统eskte本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,茶饮类型,茶饮信息开题报告内容一、研究背景随着生活品质的提升,茶饮已成为现代消费者日常生活中不可......