使用EasyExcel生成表格并且返回File对象

2023-11-16

通过此方法,可以导出表格并且存入File对象中进行其他的操作,这里通过File来进行异步存储到文件服务器,用于下载中心

 public static <T> File exportReturnToFile(List<T> data, Class<T> clazz, String fileName) {
        File file = null;
        //名称拆分前后缀
        //1.判断文件名是否有扩展
        try {
            if (StringUtils.isBlank(fileName)) {
                file = File.createTempFile(fileName, "");
            } else {
                String[] parts = fileName.split("\\.");
                String extension = "." + parts[parts.length - 1];
                String name = fileName.substring(0, fileName.length() - extension.length() - 1);
                file = File.createTempFile(name, extension);
            }
        } catch (IOException e) {
            log.error("文件生成失败,文件名异常.异常信息:{}", e.getMessage());
            throw new CustomException("文件生成失败,文件名异常");
        }

        HorizontalCellStyleStrategy horizontalCellStyleStrategy = defaultStylePolicyPolicy();

        //导出
        EasyExcel.write(file, clazz)
                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
                .registerWriteHandler(horizontalCellStyleStrategy)
                .sheet()
                .doWrite(data);


        return file;
    }
    /**
     * 默认样式策略策略
     *
     * @return
     */
    private static HorizontalCellStyleStrategy defaultStylePolicyPolicy() {
        // 头的策略
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        // 背景设置为浅蓝色
        headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
        //设置水平对齐方式
        headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        //设置字体为微软雅黑
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontName("宋体");
        headWriteCellStyle.setWriteFont(headWriteFont);

        // 内容的策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        //设置字体为微软雅黑
        WriteFont contentWriteFont = new WriteFont();
        contentWriteFont.setFontName("宋体");
        contentWriteCellStyle.setWriteFont(contentWriteFont);

        // 这个策略是 头是头的样式 内容是内容的样式
        return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用EasyExcel生成表格并且返回File对象 的相关文章

随机推荐

  • UE4 技能系统(GAS插件的使用) 01--Build Basic Classes 创建基础类

    翻译自Udemy的视频课程introduction to unreal engine 4 ability system Build Basic Classes 创建基础类 1 创建工程和人物设置 01 创建Git仓库 使用UE4 22 VS
  • CUDA学习(二十三)

    Direct3D互操作性 Direct3D 9Ex Direct3D 10和Direct3D 11支持Direct3D互操作性 CUDA上下文只能与满足以下条件的Direct3D设备互操作 必须使用设置为D3DDEVTYPE HAL的Dev
  • 脚本之抢课脚本

    UserScript name New Userscript namespace http tampermonkey net version 0 1 description try to take over the world author
  • 前后端分离 获取客户端ip_前后端分离交互

    新开一个项目 对最近学的vue进行一个总结 这段时间把前后端通信做掉 后端 介绍下使用到的工具类 请求工具 postman 后端框架 springboot 这里顺便做了个模块化 把通用工具集放common模块中 但是这里有个问题 其实我自己
  • QT入门Input Widgets之QComboBox

    目录 一 界面布局功能 1 界面位置介绍 2 界面常用操作属性 2 1基本属性 2 2添加子项目 二 属性功能介绍 1 代码添加item 2 批量插入 3 设置当前显示的索引 4 清除掉所有item 5 切换item获得索引值与当前文本 三
  • 云服务器下centos7.3 nginx动态负载均衡

    nginx动态负载均衡 什么是nginx动态负载均衡呢 传统的负载均衡 如果Upstream参数发生变化 每次都需要重新加载nginx conf文件 因此扩展性不是很高 所以我们可以采用动态负载均衡 实现Upstream可配置化 动态化 无
  • 关于小贷公司与平台合作的一点感想

    一 1 有人说小额贷款行业经过了革命浪漫主义 传统信贷 数据 数据爆炸几个阶段 现在应该是平台合作阶段了 且不说这样的论述有推销数字化平台服务之功利性 小贷行业不过10年出头 一个行业阶段的孕育 发展到变革是漫长的 哪有那么多阶段 2 我认
  • 三维重建入门学习————建模软件Blender入门篇

    背景介绍 关于近期在进行三维重建相关算法学习的时候 学得越深 发现对各个方面的知识要求得越多 之前是补了相机的拍照原理 成像原理知识 再后来还补了主流的点提取 匹配算法等等 到了最近 论文 抑或是其他技术性文章出现的纹理 贴图等等词 总会让
  • Pandas知识点-详解元素级批处理函数applymap和map

    Pandas知识点 详解元素级批处理函数applymap和map 在Pandas中 apply 可以对DataFrame和Series按列或行批处理 applymap 和map 可以分别对DataFrame和Series进行元素级的批处理
  • mybatis中判断某个字段是否为null或空

    MySql 里的IFNULL NULLIF和ISNULL用法 mybatis不能使用IFNULL这些函数 可以用case when then else end代替 select id is topic on as topicOn topic
  • flutter报错The number of method references in a .dex file cannot exceed 64K.

    The number of method references in a dex file cannot exceed 64K 这句话的意思翻译出来是 dex文件中的方法引用数不能超过64K 我的理解 引用的第三方的方法超过了64K 需要在
  • 如何将代码托管到github上

    1 注册并登陆github github官方地址 https github com 2 点击右下角的 New repository 按钮来创建一个版本库 3 将版本库命名为 coolweather 然后选择添加一个 Android 项目类型
  • 将json字符串转换成html,根据json字符串生成Html的一种方式

    文章说明 本文介绍了根据Json串生成Html的一种方式 只是简单实现了文本框 密码框 下拉框 只是觉得好玩才这样做 如果觉得没有任何价值 请忽略 不足指出希望各位大牛指点 后续将根据各位的指点继续完善 功能说明 在左侧输入框中输入Json
  • ue中的经纬高转xyz的问题

    在ue中 做了个地球仪 发现经纬度转地心坐标系老是出问题 后来发现 是转ue时 x y坐标要互换 也对 因为在cesium for unreal中还有一系列ecef转ue的相关函数 即下面的代码中 xy需要互换 在ue中才能正常使用 偏心率
  • 【图解网络协议】面试官:三次握手都不会,回去等通知吧

    文章目录 一 网络基础知识准备 1 OSI七层网络模型总结 2 TCP IP协议总结 3 TCP协议流程 4 UDP协议 5 什么是socket 二 http协议 1 什么是http协议 2 http 1 0 与 http 1 1的区别 3
  • 香农公式简介

    信道容量 指信道中信息无差错传输的最大速率 信道模型中定义了两种广义信道 调制信道和编码信道 调制信道是一种连续信道 可以用连续信道的信道容量来表征 编码信道是一种离散信道 可以用离散信道的信道容量来表征 香农公式 设信道带宽为B 单位为H
  • 五种IO模型(详解+形象例子说明)

    在网络环境下 通俗的讲 将IO分为两步 1 等 2 数据搬迁 如果要想提高IO效率 需要将等的时间降低 五种IO模型包括 阻塞IO 非阻塞IO 信号驱动IO IO多路转接 异步IO 其中 前四个被称为同步IO 在介绍五种IO模型时 我会举生
  • 给一个正整数n,求出位数。并按正序输出,逆序输出

    求出位数 思路 通过让给定的正整数n整除10 且每整除一次让统计位数的变量count自增一 返回count得到位数 include
  • 华硕主板固态硬盘不识别_[主板] 开机后无法识别硬盘或SSD的故障排除方式

    1 尝试更新官网最新的BIOS版本 可参考FAQ 华硕EZ Flash 3 介绍 2 在计算机开机后 立刻按压键盘上的 delete 键 在BIOS EZ Mode 页面的 Storage Information 字段 确认是否可以显示所接
  • 使用EasyExcel生成表格并且返回File对象

    通过此方法 可以导出表格并且存入File对象中进行其他的操作 这里通过File来进行异步存储到文件服务器 用于下载中心 public static