Java读取Excel并写入怎么操作?java poi读取excel并写入mysql

Java读取Excel并写入的核心方案是结合Apache POI或EasyExcel库,通过流式处理或内存映射技术实现高效的数据解析与持久化,其中EasyExcel因低内存占用更适合大数据量场景。

在数据驱动的时代,Excel依然是企业间流转信息最通用的载体,无论是财务对账、库存盘点还是用户数据迁移,Java开发者经常面临将非结构化或半结构化的表格数据转化为程序可处理对象的任务,过去,开发者往往依赖老旧的API,导致在处理万级甚至百万级数据时频繁遭遇内存溢出,选择合适的工具链并掌握正确的读写策略,能让这一过程变得既稳定又高效。

【狂神说Java】POI及EasyExcel一小时搞定通俗易懂
加载中
【狂神说Java】POI及EasyExcel一小时搞定通俗易懂

技术选型:POI与EasyExcel的深度对比

选择正确的库是项目成功的基石,业内专家指出,不同场景下对性能和资源的需求差异巨大,盲目追求“最新”或“最流行”往往适得其反。

Apache POI的传统优势与局限

Apache POI是Java操作Office文档的事实标准,支持.xls和.xlsx格式,它的优势在于功能全面,能够精确控制单元格样式、公式计算以及图表嵌入,对于需要精细排版或复杂公式计算的报表生成场景,POI依然是首选。

POI的短板也显而易见,它在解析Excel时会将整个工作簿加载到内存中,据统计,处理超过1万行数据时,JVM堆内存占用会显著上升,在服务器资源有限的生产环境中,这极易引发OutOfMemoryError错误,POI的API设计较为繁琐,编写样板代码较多,开发效率相对较低。

EasyExcel的轻量化革命

针对POI的痛点,阿里巴巴开源的EasyExcel应运而生,它基于POI底层,但采用了单元格事件解析模式,实现了“边读边写”的流式处理机制。

Java读取Excel并写入怎么操作?java poi读取excel并写入mysql

  • 内存占用极低:无论Excel文件多大,内存占用始终保持在MB级别,轻松应对百万级数据导入。
  • API简洁直观:通过注解映射实体类,开发者只需关注数据模型,无需关心底层XML解析细节。
  • 生态兼容性好:完美支持Spring Boot集成,且对.xlsx格式支持优异,对老旧.xls格式支持有限。

对于大多数业务系统的数据导入导出需求,EasyExcel已成为行业共识中的主流选择。

实战指南:Java读取Excel数据

读取Excel的核心在于将表格中的每一行数据映射为Java对象,以下以EasyExcel为例,展示标准的数据读取流程。

环境依赖配置

在Maven项目中,引入核心依赖是第一步,确保版本稳定,避免使用SNAPSHOT版本进行生产部署。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

定义数据模型

使用注解定义Excel列与Java字段的对应关系。@ExcelProperty注解中的索引或名称决定了映射规则。

@Data
public class UserExcelData {
    @ExcelProperty("姓名")
    private String name;
<pre><code>@ExcelProperty("年龄")
private Integer age;
@ExcelProperty("邮箱")
private String email;

执行读取操作

调用read方法,传入文件路径、数据类以及监听器,监听器负责处理每一行数据的回调逻辑。

Java读取Excel并写入怎么操作?java poi读取excel并写入mysql

EasyExcel.read("users.xlsx", UserExcelData.class, new PageReadListener<UserExcelData>(dataList -> {
    // 每页处理逻辑,例如批量入库
    for (UserExcelData data : dataList) {
        System.out.println(data.getName());
    }
})).sheet().doRead();

这种分页读取的方式,既保证了内存安全,又提高了处理吞吐量。

高效写入:构建结构化Excel文件

写入操作通常用于生成报表或导出数据,与读取不同,写入更关注数据的组装和样式的控制。

基础写入流程

使用write方法,指定输出路径和数据类,通过withTemplate方法可以实现基于模板的填充,这种方式在财务报表生成中尤为常见,因为它能保留复杂的表头设计和公式。

大数据量写入优化

当数据量达到十万级以上时,同步写入可能导致页面超时,此时应启用异步写入或分批写入策略。

  • 分批写入:将数据分割成多个小批次,每次写入后刷新输出流,避免一次性构建庞大的内存对象树。
  • 异步线程池:利用线程池并行处理数据转换,主线程仅负责接收结果并写入文件,提升整体响应速度。

常见坑点与解决方案

在写入过程中,开发者常遇到日期格式错乱或数字精度丢失的问题,解决方案是在实体类字段上添加@DateTimeFormat注解,指定具体的日期格式,如”yyyy-MM-dd HH:mm:ss”,对于金额字段,建议使用BigDecimal类型,并配合@NumberFormat注解确保精度。

Q&A:Java读取Excel并写入常见问题解析

Java读取Excel并写入怎么操作?java poi读取excel并写入mysql

Java读取Excel并写入时如何处理特殊字符和乱码?

乱码问题通常源于编码不一致,Excel文件在Windows下默认使用GBK编码,而在Linux服务器或某些编辑器中可能保存为UTF-8,在读取时,EasyExcel默认使用UTF-8,若遇到GBK编码的.xls文件,需在read方法中显式指定charset为Charset.forName(“GBK”),对于写入,建议统一使用UTF-8编码保存文件,并在前端下载时设置正确的Content-Type头,避免浏览器解析错误。

Java读取Excel并写入过程中出现OOM(内存溢出)怎么办?

OOM是大数据量处理中的头号杀手,首先检查是否使用了POI的SXSSFWorkbook以外的模式,SXSSFWorkbook虽支持流式写入,但读取仍需全量加载,确认是否使用了EasyExcel的流式读取监听器,避免将所有数据加载到List中,检查实体类中是否存在大对象引用,如图片二进制数据,应将其移除或仅存储路径,若数据量极大,建议分片处理,每次只读取和处理固定行数,处理完即释放内存。

Java读取Excel并写入能否实现复杂样式的保留与修改?

EasyExcel主要关注数据层面的读写,对样式的精细控制能力弱于POI,若需保留原有Excel的复杂样式(如合并单元格、条件格式、图表),最佳实践是“模板填充”,即预先制作好带有样式的Excel模板,程序中仅填充数据,若需动态修改样式,可结合POI的底层API,在EasyExcel写入完成后,通过POI读取生成的文件进行样式微调,但这会牺牲部分性能,对于纯数据导出,建议放弃样式保留,直接生成标准格式文件,以提升处理速度。

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/453455.html

(0)
cdn节点主机需要备案吗,cdn服务器备案要求
上一篇 2026年7月4日 14:13
cdn运维面试题,cdn运维面试常见问题有哪些
下一篇 2026年7月4日 14:15

相关推荐

  • 云南原生态菜味道如何?云南特色菜有哪些好吃推荐

    原生态云南菜的核心在于“野”与“鲜”,通过野生菌、香草与发酵技艺的结合,呈现出酸、辣、鲜、香多层次的风味体验,云南菜的灵魂:山野间的自然馈赠云南菜之所以能征服挑剔的味蕾,根本原因在于其食材来源的纯粹性,这里没有工业化养殖的标准化流程,更多的是依靠大自然的随机馈赠,当你走进云南的市场,首先映入眼帘的不是整齐划一的……

    2026年5月28日
    4900
  • AIoT全平台销量如何?2026年AIoT设备市场趋势分析

    2026年AIoT全平台销量持续攀升,核心驱动力已从单一硬件参数转向“场景化智能体验”与“跨品牌互联互通”能力,消费者更倾向于选择支持主流生态协议且具备本地化数据处理能力的产品,随着人工智能大模型下沉至边缘设备,物联网市场迎来了真正的爆发期,过去的物联网是“连接”,现在的物联网是“理解”,用户不再满足于通过手机……

    2026年6月15日
    2600
  • 广西智能家居系统怎么订制?广西智能家居定制费用是多少

    在广西地区,选择本地化定制智能家居系统能显著降低后期维护成本并提升设备稳定性,建议优先考察具备本地施工资质且支持私有化部署的服务商,而非盲目追求国际大牌的标准套餐,随着居住品质的提升,越来越多的广西家庭开始关注居住空间的智能化升级,不同于北方干燥气候下的设备运行逻辑,广西特有的高温高湿环境对智能家居系统的稳定性……

    2026年5月29日
    4000
  • AspNet网站卡顿怎么解决?高效性能优化技巧分享

    缓存策略、数据库优化、代码精简、服务器配置和前端集成是ASP.NET性能优化的核心支柱,有效应用这些技巧能显著提升应用响应速度、降低资源消耗并增强用户体验,以下汇总基于多年实践和行业标准,涵盖从开发到部署的全周期优化方案,缓存优化:加速数据访问缓存是减少数据库负载和加快页面响应的首选,ASP.NET提供多种缓存……

    2026年2月12日
    15430
  • 六六云美西9929线路VPS实测延迟多少?国内访问稳定性如何

    六六云美西原生9929线路实测结论:国内延迟稳定在80-100ms区间,丢包率极低,原生IP支持解锁Netflix、Disney+及TikTok,适合对网络质量有较高要求的视频创作者和跨境业务用户,在VPS选型中,线路质量往往比单纯的价格更具决定性,六六云作为近年来备受关注的服务商,其美西9929线路凭借原生I……

    2026年6月19日
    4100
  • AI换脸双十二活动有哪些优惠?,AI换脸技术如何省钱?

    AI换脸双十二活动:技术赋能营销新纪元的核心引擎双十二购物节已超越传统促销逻辑,成为品牌技术力与用户体验的终极竞技场,AI换脸技术凭借其颠覆性交互能力,正以87%的消费者互动率与3倍以上的转化效率(2023零售科技白皮书),成为撬动流量增量的核心杠杆,本活动深度聚焦技术合规应用与商业价值转化双轨并行,为品牌提供……

    2026年2月15日
    21410
  • Sharktech年付仅47.7美元值得买吗,美国VPS免防DDoS推荐

    Sharktech年付仅需47.7美元即可拿下高性能Cloud Virtual Servers,自带60Gbps免费DDoS防护,是追求极致性价比与稳定性的建站首选方案,在服务器租赁市场,价格与性能的平衡一直是用户最头疼的问题,很多初学者在寻找便宜主机时,往往忽略了网络稳定性这一核心指标,导致网站上线后频繁宕机……

    2026年6月24日
    1700
  • AIoT前端研发部是做什么的?AIoT前端开发需要掌握哪些技术

    AIoT前端研发部通过构建高可用、低延迟的交互层,解决了物联网设备海量连接下的用户体验断层问题,是实现从“连接”到“智能”的关键枢纽,在传统的物联网开发模式中,硬件工程师往往专注于传感器数据采集与协议解析,而将界面交互视为次要环节,随着智能家居、工业物联网和智慧城市项目的普及,这种割裂的开发模式导致了严重的体验……

    2026年6月15日
    2500
  • 荷兰美国VPS测评,哪个性价比高?荷兰美国VPS推荐

    综合实测数据显示,若追求极致的低延迟与国内访问速度,荷兰VPS是更优选择;若侧重业务全球化布局、数据合规性及高并发稳定性,美国VPS则具备不可替代的优势,具体需根据业务场景决定,硬件配置与网络架构深度对比物理节点与带宽资源差异在2026年的数据中心布局中,荷兰阿姆斯特丹作为欧洲互联网交换中心(AMS-IX)的核……

    2026年5月13日
    4300
  • 广电网络怎么设置路由器?广电宽带路由器设置方法步骤

    先单机连接光猫获取并记录广电网关地址,再将路由器WAN口设为动态IP(或根据地区克隆MAC地址),最后避开光猫网段修改LAN口IP并关闭DHCP冲突即可完成精准配置,广电网络路由配置前置洞察认清广电网的底层架构差异与电信联通等主流运营商不同,广电网络常采用PON+EOC或FTTH混合接入架构,据2026年《中国……

    2026年4月24日
    6200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注