首页 > 其他分享 >iexcel-excel 读取和写入,解决 excel OOM 问题

iexcel-excel 读取和写入,解决 excel OOM 问题

时间:2024-02-26 10:36:08浏览次数:35  
标签:name filePath OOM 写入 age excel iexcel User

项目简介

IExcel 用于优雅地读取和写入 excel。

避免大 excel 出现 oom,简约而不简单。

特性

  • 一行代码搞定一切

  • OO 的方式操作 excel,编程更加方便优雅。

  • sax 模式读取,SXSS 模式写入。避免 excel 大文件 OOM。

  • 基于注解,编程更加灵活。

  • 设计简单,注释完整。方便大家学习改造。

  • 可根据注解指定表头顺序

  • 支持 excel 文件内容 bytes[] 内容获取,便于用户自定义操作。

变更日志

变更日志

v0.0.9 主要变更

Fixed @ExcelField注解失效问题

创作缘由

实际工作和学习中,apache poi 操作 excel 过于复杂。

近期也看了一些其他的工具框架:

  • easypoi

  • easyexcel

  • hutool-poi

都或多或少难以满足自己的实际需要,于是就自己写了一个操作 excel 导出的工具。

实现:在阿里 easyexcel 的基础上进行封装,提升使用的简易度。

快速开始

环境要求

jdk1.8+

maven 3.x

引入 jar

使用 maven 管理。

<dependency>
     <groupId>com.github.houbb</groupId>
     <artifactId>iexcel</artifactId>
     <version>1.0.0</version>
</dependency>

Excel 写入

示例

// 基本属性
final String filePath = PathUtil.getAppTestResourcesPath()+"/excelHelper.xls";
List<User> models = User.buildUserList();

// 直接写入到文件
ExcelHelper.write(filePath, models);

其中:

  • User.java
public class User {

    private String name;

    private int age;

    //fluent getter/setter/toString()
}
  • buildUserList()

构建对象列表方法如下:

/**
 * 构建用户类表
 * @return 用户列表
 * @since 0.0.4
 */
public static List<User> buildUserList() {
    List<User> users = new ArrayList<>();
    users.add(new User().name("hello").age(20));
    users.add(new User().name("excel").age(19));
    return users;
}

写入效果

excel 内容生成为:

name	age
hello	20
excel	19

Excel 读取

示例

final String filePath = PathUtil.getAppTestResourcesPath()+"/excelHelper.xls";
List<User> userList = ExcelHelper.read(filePath, User.class);

信息

[User{name='hello', age=20}, User{name='excel', age=19}]

SAX 读

// 待生成的 excel 文件路径
final String filePath = PathUtil.getAppTestResourcesPath()+"/excelReadBySax.xls";

        AbstractSaxReadHandler<User> saxReadHandler = new AbstractSaxReadHandler<User>() {
            @Override
            protected void doHandle(int i, List<Object> list, User user) {
                System.out.println(user);
            }
        };

ExcelHelper.readBySax(User.class, saxReadHandler, filePath);

文档

01-ExcelBs 引导类使用说明

02-ExcelField 注解指定字段属性

03-ExcelField#order 指定列顺序

04-ExcelBs#bytes 获取文件字节信息

Bug & Issues

欢迎提出宝贵意见:Bug & Issues

本文由博客一文多发平台 OpenWrite 发布!

标签:name,filePath,OOM,写入,age,excel,iexcel,User
From: https://www.cnblogs.com/houbbBlogs/p/18033762

相关文章

  • 零难度指南:手把手教你如何通过在线Excel实现资产负债表
    前言作为财务分析中的三大报表之一,资产负债表的作用是展示一个企业在特定时间点上的财务状况。今天小编就为大家介绍一下如何使用葡萄城公司的纯前端在线表格控件SpreadJS实现一个资产负债表。环境准备SpreadJS在线Excel体验地址:https://demo.grapecity.com.cn/SpreadJS/WebDes......
  • 美团面试:说说OOM三大场景和解决方案? (绝对史上最全)
    首先,咱们先聊聊,什么是OOM?小伙伴们,有没有遇到过程序突然崩溃,然后抛出一个OutOfMemoryError的异常?这就是我们俗称的OOM,也就是内存溢出。简单来说,就是你的Java应用想要的内存超过了JVM愿意给的极限,就会抛出这个错误。那么为什么会出现OOM呢?一般都是由这些问题引起:分配过少:JVM......
  • 安卓开发一个功能并将数据存储到Room中的流程以及注意事项
    开发流程与注意事项添加Room依赖:确保在build.gradle文件中添加了Room的依赖项。注意使用kapt插件而不是annotationProcessor来处理注解以及这二者之间的兼容性关系。定义实体(Entity):创建一个或多个实体类,用@Entity注解标记,表示数据库中的表。创建数据访问对象(DAO):定义一个接口,使......
  • laravel将excel水平分割成多张表
    在Laravel中,可以使用PhpSpreadsheet库来读取Excel文件,并将其水平分割成多个表格。首先,通过Composer安装了PhpSpreadsheet库:composerrequirephpoffice/phpspreadsheet使用<?phpnamespaceApp\Console\Commands;useIlluminate\Console\Command;usePhpOffice\PhpSpread......
  • js_将excel内容先存入数据库,再将数据显示到页面
    <%--将excel数据显示到页面--%><scripttype="text/javascript">//原创来自www.luofenming.com//首先监听input框的变动,选中一个新的文件会触发change事件document.querySelector("#testFile").addEventListener("change",function(){......
  • Excel窗体控件笔记
    工作表控件分成2种表单控件(图片上面)ActiveX控件(图片下面)一,表单控件这种如果只是使用代码其实和我们直接在工作表里插入一个图形是一样的效果可以把一些参数直接设置到单元格里,不需要代码辅助,配合公式等可以实现一些自动化效果但是,设置不了一些颜色样式等等,看上去比较素......
  • 盘点一个Python自动化办公Excel数据处理的需求
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【干锅牛蛙】问了一个Python处理Excel数据的问题。问题如下:有两个问题哈:1、表头有合并单元格识别不出来,如何处理类似下图2、遇到单元格有公式自动识别成了0,如何处理,保留计算后的值,类似下图附上他自己的代码如下:目......
  • .Net Code Excel 文件导入
    第一步下载NuGetNPOI包///<summary>///将excel文教导入到订单表///</summary>///<paramname="file">excel文件</param>///<returns>:-1;返回导入文件格式不正确</returns>[HttpPost]publicIActionResultUp......
  • Python处理Word,Excel,PDF
    openpyxl模块处理Excel表安装以下命令意思是:指定D盘下的Python解释器用豆瓣的源安装openpyxl模块D:\PycharmProjects\Study\venv\Scripts\python.exe-mpipinstallopenpyxl-ihttp://pypi.douban.com/simple--trusted-host=pypi.douban.com基本概念openpyxl库有三大模......
  • 偶发的系统卡顿内存飙升导致OOM
    线上有个小程序,客户反馈的现象是偶发性的卡主没响应,前端失去连接,点其他菜单都没响应。通过查看配置的dump目录有很多的GC日志,以及生成的一个堆内存快照。JVM的配置参数大概为:-Xms512M-Xmx512M-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=D:\dump\-XX:+PrintGCDetail......