使用Hutool生成Excel工作日报文件

本文介绍了如何使用Hutool工具库生成Excel和CSV文件,包括字体设置、单元格样式、合并单元格等操作,并展示了通过代码自动生成工作日报的示例。此外,文章探讨了现有功能的不足,提出利用ChatGPT增强自动化生成和编辑日报的可能性。

前言

当今互联网时代,数据处理已成为我们工作中的重要一环。无论是在企业管理中,还是在个人日常生活中,数据的管理和分析都至关重要。在数据处理中,导出数据到Excel或CSV文件成为一种非常普遍的需求。例如我们需要将数据导出到Excel文件供运营或者财务人员分析使用,数据导出到CSV文件提供CRM系统导入。本篇技术博客将介绍使用Hutool工具生成Excel和CSV文件的基本流程,并演示如何在一个接口中通过将Excel和CSV文件压缩到Zip压缩包中且不生成本地文件。

Hutool工具简介

Hutool是一个小而全的Java工具类库。它包含了一系列的工具类,如字符串分割、替换、格式化等的字符串处理工具、文件读取、写入、复制、移动等文件操作工具、日期格式化、计算、转换等功能的日期时间处理工具等等可以帮助Java开发者提高开发效率,满足大多数的Java开发中的工具类的需求,减少重复劳动。Hutool官网地址

Hutool提供了如下工具组件:

模块 介绍
hutool-aop JDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache 简单缓存实现
hutool-core 核心,包括Bean操作、日期、各种Util等
hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto 加密解密模块,提供对称、非对称和摘要算法封装
hutool-db JDBC封装后的数据操作,基于ActiveRecord思想
hutool-dfa 基于DFA模型的多关键字查找
hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http 基于HttpUrlConnection的Http客户端封装
hutool-log 自动识别日志实现的日志门面
hutool-script 脚本执行封装,例如Javascript
hutool-setting 功能更强大的Setting配置文件和Properties封装
hutool-system 系统参数调用封装(JVM信息等)
hutool-json JSON实现
hutool-captcha 图片验证码实现
hutool-poi 针对POI中Excel和Word的封装
hutool-socket 基于Java的NIO和AIO的Socket封装
hutool-jwt JSON Web Token (JWT)封装实现

使用方式如下:

🍊Maven

在项目的pom.xml的dependencies中加入以下内容:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

🍐Gradle

implementation 'cn.hutool:hutool-all:5.8.16'

因为小编的工作岗位每天都要都要写日报,疫情期间由直接文字提交变为了使用Excel制式文件(加剧内卷???),在写了几个月以后终于借助某个需要导出Excel文件的需求顺势来生成Excel工作日报,本文借助我的工作日报演示生成Excel文件,主要包含了Excel单元格字体设置、合并单元格合、自动换行、设置背景颜色等主要Excel操作。整体的设想为通过代码生成Excel日志制式文件,在输入给ChatGPT本周的工作目标借助ChatGPT的废话文学特点自动填充日报,达到自动写日报的目的。目前实现了生成日报制式文件功能,先记录下来。工作日报Excel制式主要包含今日复盘和明日工作计划文件如下:

  1. 今日复盘如下:
    在这里插入图片描述
  2. 明天规划如下:
    在这里插入图片描述

Excel的字体和样式

分析上面的工作日报文件每天都包含一个今日工作复盘和明日工作规划,同时TODO List 字体大小与其它内容的字体不一样,且有不同的背景颜色, 字体加粗,内容自动换行。

  1. 添加Hutool依赖

    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.8.15</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.2</version>
    </dependency>
    

    Hutool-all中包含了Hutool的所有工具类,由于需要生成Excel文件需要依赖poi(ps:许多人诟病Hutool的原因之一?)

  2. Excel文件Cell字体设置

    ​ 主要设置Excel字体名称、字体大小、字体颜色、下划线、是否加粗、是否斜体、是否有删除线等常用的字体设置方法,代码如下:

    	/**
         * 单元格字体常用设置基础方法
         *
         * @param writer    ExcelWriter
         * @param fontName  字体名称(ex:微软雅黑、宋体、仿宋,需要底层操作系统支持)
         * @param fontSize  字体大小
         * @param color     字体颜色
         * @param underline 下划线样式
         * @param bold      是否加粗
         * @param strikeout 是否有删除线
         * @param italic    是否斜体
         * @return Font
         */
        public static Font createCellBaseFont(ExcelWriter writer, String fontName, short fontSize, short color,
                byte underline, boolean bold, boolean strikeout, boolean italic) {
         
         
            // 创建单元格Cell字体
            Font font = writer.createFont();
            // 设置字体名称(ex:微软雅黑、宋体、仿宋)
            font.setFontName(fontName);
            // 设置字体大小
            font.setFontHeightInPoints(fontSize);
            // 设置字体颜色
            font.setColor(color);
            // 设置字体是否加粗
            font.setBold(bold);
            // 设置字体下划线样式
            font.setUnderline(underline);
            // 设置是否有删除线
            font.
### 如何使用 Hutool 实现 Excel 的下拉选项功能 Hutool 是一款非常实用的 Java 工具库,它提供了许多便捷的方法来处理常见的开发需求。对于生成带有下拉选项的 Excel 文件,可以通过 Hutool 结合 Apache POI 来完成这一功能。 尽管 Hutool 自身并没有直接提供设置数据验证(即下拉选项)的功能[^2],但它可以作为封装工具调用底层的 Apache POI API 完成复杂操作。以下是具体实现方法: #### 使用 Apache POI 设置下拉选项 由于 Hutool 基于 Apache POI 开发,在其内部仍然依赖 Apache POI 进行核心操作,因此可以直接利用 Apache POI 提供的数据验证接口来定义下拉选项[^3]。下面是一个完整的代码示例展示如何通过 Hutool 和 Apache POI 配置下拉菜单: ```java import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFDataValidationHelper; public class ExcelDropdownExample { public static void main(String[] args) { // 创建一个简单的表格写入器 ExcelWriter writer = ExcelUtil.getWriter("example.xlsx"); // 添加一些基础数据到第一个 Sheet 中 writer.writeCellValue(0, 0, "请选择"); // 获取当前工作簿和工作表对象 Workbook workbook = writer.getWorkbook(); DataValidationConstraint constraint; DataValidation validation; Sheet sheet = writer.getSheet(); // 定义下拉列表的内容 String[] dropdownValues = {"选项A", "选项B", "选项C"}; DataValidationHelper helper = new XSSFDataValidationHelper((org.apache.poi.xssf.usermodel.XSSFSheet) sheet); constraint = helper.createExplicitListConstraint(dropdownValues); // 定义应用范围 (第1列,从第1行开始) CellRangeAddressList addressList = new CellRangeAddressList(0, 10, 0, 0); // A1:A11 范围 // 创建数据验证规则并将其添加到工作表中 validation = helper.createValidation(constraint, addressList); validation.setSuppressDropDownArrow(true); // 显示箭头按钮 sheet.addValidationData(validation); // 关闭资源并保存文件 writer.close(); } } ``` 上述代码展示了如何借助 Hutool 编写的 `ExcelWriter` 对象以及 Apache POI 的扩展能力,向指定区域内的单元格添加自定义下拉选项。需要注意的是,虽然此方案实现了基本的需求,但由于 Excel2007 及更高版本本身存在某些限制(例如无法跨 Sheet 解析数据验证),所以在实际项目中可能还需要额外注意这些细节[^1]。 #### 注意事项 - 如果希望下拉框中的内容来源于其他 Sheet,则需手动构建链接关系并通过公式表达式传递给约束条件。 - 当前实现仅适用于 `.xlsx` 格式的文档;如果目标是 `.xls` 类型,则需要调整部分代码逻辑以适配旧版 Poi 库特性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵喵@香菜

感谢观众老爷送的一发火箭!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值