POI从入门到上手(三)-轻松完成EasyExcel使用,完成Excel导入导出.

前言:

Apache POI

是一个流行的 Java 库,用于处理 Microsoft Office 格式文件,提供丰富 API 来创建、读取和修改 Office 文档。

1. 官网Apache POI™ - the Java API for Microsoft Documents

2. 优点:功能强大,可处理复杂 Excel 文件;稳定性高,受广泛支持与维护;灵活性好,能满足定制需求。

3. 缺点:学习曲线陡,对初学者成本高;处理大量数据时性能受影响。

EasyPoi

主打功能简单易用,通过简单注解和模板语言就能实现 Excel 导出、导入、Word 模板导出等功能。

1. 官网https://gitee.com/lemur/easypoi

2. 优点:API 接口简洁,操作便捷;功能丰富,支持多种操作;基于 Apache POI 和 JexcelApi,易于扩展;文档详细,便于学习使用。

3. 缺点:与 Apache POI 相比,高级功能有限;因封装层存在,处理大量数据有性能损耗。

EasyExcel

是阿里巴巴基于 Apache POI 封装的开源框架,专注 Excel 文件读写。

1. 官网EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网

2. 优点:API 简洁,使用方便;处理大量数据时性能高;支持注解配置导入导出规则,简化开发。

3. 缺点:相比 Apache POI,功能简单,无法满足复杂需求;定制化能力不如 Apache POI 灵活。

一、EasyExcel

EasyExcel 是阿里巴巴开源的一个基于 Java 的简单、省内存的读写 Excel 工具。在处理大文件时,它能极大地减少内存占用,并且使用起来相对简单。

1.1、 核心特性

内存占用少: 采用逐行读取和写入的方式,无需将整个 Excel 文件加载到内存中,避免了内存溢出问题,适合处理大数据量的 Excel 文件。例如在处理包含数万条数据的 Excel 文件时,传统方式可能会导致内存不足,而 EasyExcel 可以轻松应对。

API 简单: 提供了简洁的 API,通过注解就能完成 Excel 数据的读写映射,降低了开发成本和学习成本。开发人员只需简单配置注解,就能实现数据与 Excel 单元格的映射。

功能丰富: 支持 Excel 的导入导出、数据校验、自定义格式等功能,还能处理复杂表头和多级表头。

性能高效: 在读写性能上表现出色,能够快速处理大量数据,提高程序的执行效率。

1.2、 常用注解

@ExcelProperty: 用于指定 Excel 列的表头名称、顺序等信息,是最常用的注解。可以通过 value 属性指定表头名称,通过 index 属性指定列的索引。

@DateTimeFormat: 用于格式化日期类型的数据。例如 @DateTimeFormat("yyyy-MM-dd") 可以将日期格式化为指定的字符串。

@NumberFormat: 用于格式化数字类型的数据。例如 @NumberFormat("#.##%") 可以将数字格式化为百分比形式。

1.3、使用步骤

1.3.1、引入依赖

java 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

1.3.2、创建实体对象

java 复制代码
@Data
public class SysUserData {

    @ExcelProperty("用户姓名")
    private String uname;

    @ExcelProperty("真实姓名")
    private String iphone;

    @ExcelProperty("用户名")
    private String realName;

    @ExcelProperty("密码")
    private String ipassword;

    @ExcelProperty("登陆ip")
    private String lastloginip;

    @ExcelProperty("登录时间")
    private String lastlogintime;

    @ExcelProperty("登陆次数")
    private String logintimes;

    @ExcelProperty("账号状态")
    private int state;

}

1.3.3、导入

java 复制代码
/**
     * easyExcl
     * 导入excel
     * @return
     */
    @RequestMapping(value = "/easyExcelImport")
    public List<SysUser> easyExcelImport() {
        List<SysUser> uList = null;
        try {
            uList = new ArrayList<>();
            String filePath = "/Users/admin/Desktop/user.xlsx";
            List<SysUserData> userList = EasyExcel.read(filePath).head(SysUserData.class).sheet().doReadSync();
            for (SysUserData user : userList) {
                SysUser sysUser = new SysUser();
                sysUser.setUname(user.getUname());
                sysUser.setRealName(user.getRealName());
                sysUser.setIphone(user.getIphone());
                sysUser.setIpassword(user.getIpassword());
                sysUser.setLastloginip(user.getLastloginip());
                sysUser.setLastlogintime(DateUtils.DateTimeToTimestamp(String.valueOf(user.getLastlogintime())));
                sysUser.setLogintimes(user.getLogintimes());
                sysUser.setState(user.getState());
                userService.addUser(sysUser);
                uList.add(sysUser);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return uList;
    }

1.3.4、导出

java 复制代码
 /**
     * easyexcel
     * 导出
     * @param response
     * @throws IOException
     */
    @RequestMapping(value = "/easyExcelWrite")
    public void easyExcelWrite(HttpServletResponse response) throws IOException {
        response.setCharacterEncoding("utf-8");
        long timestamp = System.currentTimeMillis() / 1000;
        String fileName = "用户信息_" + timestamp + ".xlsx";
        String encodedFileName = URLEncoder.encode(fileName, "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + encodedFileName);
        List<SysUserData> dataList = new ArrayList<SysUserData>();
        // 数据
        List<SysUser> userList = userService.userList();
        for (SysUser user : userList) {
            SysUserData SysUserData = new SysUserData();
            SysUserData.setUname(user.getUname());
            SysUserData.setRealName(user.getRealName());
            SysUserData.setIphone(user.getIphone());
            SysUserData.setIpassword(user.getIpassword());
            SysUserData.setLastloginip(user.getLastloginip());
            SysUserData.setLastlogintime(DateUtils.TimestampToDateTime(user.getLastlogintime()));
            SysUserData.setLogintimes(user.getLogintimes());
            SysUserData.setState(user.getState());
            dataList.add(SysUserData);
        }
        HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(StyleUtils.getHeadStyle(), StyleUtils.getContentStyle());
        try (
        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), SysUserData.class)
                .registerWriteHandler(new CellWriteWidthConfig()) // 自适应列宽
                .registerWriteHandler(new CellWriteHeightConfig()) // 自适应行高
                .registerWriteHandler(horizontalCellStyleStrategy)
                .build()) {
            excelWriter.write(dataList, EasyExcel.writerSheet("用户信息").build());
        }catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

通过以上内容便可轻轻松松使用EasyExcel.是不是超级简单.有任何问题欢迎留言哦!!!

重点!重点!重点!

遇到问题不用怕不如来我的知识库找找看,也许有意想不到的收获!!!

易网时代-易库资源-易库教程:.NET开发、Java开发、PHP开发、SqlServer技术、MySQL技术-开发资料大全-易网时代-易库资源-易库教程 (escdns.com)

相关推荐
破z晓11 小时前
javascript 导出excel表
开发语言·javascript·excel
Am-Chestnuts15 小时前
豆包多轮回答中的表格导出 Excel:编号、日期与长数字检查
excel
hPw0eKIqD1 天前
使用二次封装的Excel COM 组件操作Excel\WPS ET中的区域、行和列
excel·wps
冰心孤城1 天前
Excel: xls与xlsx格式转换排坑指南
java·前端·excel
金豆呀2 天前
WPS批量提取Word文档内容生成固定格式Excel表格
word·excel·wps
Access开发易登软件2 天前
Access 怎么做前后端分离?用 Web API 读写 SQL Server
前端·数据库·人工智能·microsoft·excel·access
红莲凪是3 天前
使用二次封装的Excel COM 组件操作Excel\WPS ET IExcelRange 高级应用
python·excel·wps
用户298698530143 天前
如何使用免费工具在线将 Excel 转换为 XML 格式
人工智能·后端·excel
开开心心就好3 天前
内存清理工具定时自动清理开机自启动
java·开发语言·elasticsearch·ocr·excel·音视频·big data
开开心心就好3 天前
电脑内存优化工具一键释放内存超简单
java·开发语言·macos·arcgis·ocr·excel·音视频