每日一博 - Excel导入导出的那点事儿

news2024/9/21 4:28:21

文章目录

  • POI
  • POI不同版本的实现
    • HSSFWorkbook
    • XSSFWorkbook
    • SXSSFWorkbook
  • 不同API实现的优缺点
    • HSSFWorkbook
      • 缺点
      • 优点
    • XSSFWorkbook
      • 优点
      • 缺点
    • SXSSFWorkbook
      • 优点:
      • 缺点:
  • 经验
  • 百万级别的数据导入导出的方案 EasyExcel
  • 通用导入导出思路

在这里插入图片描述


POI

想到数据的导入导出,大部分人最会想到apache的poi框架 以及Excel的版本问题。

POI 是 Apache 的一个开源项目,全称是 Poor Obfuscation Implementation,它是 Java 语言对 Microsoft Office 文档格式的操作工具。

主要功能包括:

  1. 提供对 Excel 电子表格的读写支持,可以读取和修改 Excel 的数据、样式等内容。
  2. 提供对 Word 文档的读写支持,可以读取和修改 Word 文档的文本、样式、列表等内容。
  3. 提供对 PowerPoint 演示文稿的读写支持,可以读取和修改 PPT 的文本、表格、图片等内容。
  4. 提供对 Outlook 电子邮件的支持,可以创建和修改 Outlook 邮件文件。
  5. 支持其他 Microsoft Office 文件格式,如 Visio、Publisher 等。

POI 的主要优点:

  • 使用 Java 语言开发,跨平台运行于 Windows、Linux、Unix 等系统。
  • 提供了易于使用的 API,可以用 Java 代码方便地处理 Office 文档。
  • 成熟稳定,拥有大量用户群,社区活跃。
  • 免费开源,代码托管在 Apache。

总之,POI 是操作 Office 文档的好工具,适合在需要编程处理 Excel、Word、PPT 等 Office 文档的场景下使用


POI不同版本的实现

HSSFWorkbook

早期使用最多的对象,它可以操作Excel2003以前(包含2003)的所有Excel版本。

在2003以前Excel的版本后缀还是.xls


XSSFWorkbook

操作的Excel2003–Excel2007之间的版本,Excel的扩展名是.xlsx


SXSSFWorkbook

POI3.8之后的版本才有的,它可以操作Excel2007以后的所有版本Excel,扩展名是.xlsx


不同API实现的优缺点

HSSFWorkbook

它是POI版本中最常用的方式

缺点

  • 最多只能导出 65535行,也就是导出的数据函数超过这个数据就会报错;

优点

  • 一般不会报内存溢出。(因为数据量还不到7w所以内存一般都够用, 是将数据先读取到内存中,然后再操作)

XSSFWorkbook

优点

这种形式的出现是为了突破HSSFWorkbook的65535行局限,是为了针对Excel2007版本的1048576行,16384列,最多可以导出104w条数据;

缺点

虽然导出数据行数增加了好多倍,但是随之而来的内存溢出问题也更加突出。因为所创建的book,Sheet,row,cell等在写入到Excel之前,都是存放在内存中的


SXSSFWorkbook

从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的SXSSF方式:

优点:

  • 一般不会出现内存溢出(它使用了硬盘来换取内存空间,当内存中数据达到一定程度这些数据会被持久化到硬盘中存储起来,而内存中存的都是最新的数据),
  • 支持大型Excel文件的创建(存储百万条数据轻轻松松)

缺点:

  • 既然一部分数据持久化到了硬盘中,且不能被查看和访问那么就会导致,在同一时间点我们只能访问一定数量的数据,也就是内存中存储的数据;
  • sheet.clone()方法将不再支持,还是因为持久化的原因;
  • 不再支持对公式的求值,还是因为持久化的原因,在硬盘中的数据没法读取到内存中进行计算;
  • 在使用模板方式下载数据的时候,不能改动表头,还是因为持久化的问题,写到了硬盘里就不能改变了;

经验

1、当我们经常导入导出的数据不超过7w的情况下,可以使用 HSSFWorkbook 或者 XSSFWorkbook都行;

2、当数据量查过7w并且导出的Excel中不牵扯对Excel的样式,公式,格式等操作的情况下,推荐使用SXSSFWorkbook;

3、当数据量查过7w,并且我们需要操做Excel中的表头,样式,公式等,这时候我们可以使用 XSSFWorkbook 配合进行分批查询,分批写入Excel的方式来做;


百万级别的数据导入导出的方案 EasyExcel

https://github.com/alibaba/easyexcel

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


通用导入导出思路

通用导入导出思路

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/821725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超乎想象,北斗定位让港口作业更高效

北斗定位技术的出现,正在改变许多行业的生产方式,其中港口作业就是其中之一。港口是世界各地贸易的重要枢纽,其运作需要高度的精度和效率。北斗定位技术的引入,不仅让港口作业更加高效,而且还提高了安全性和可靠性。 首…

uniapp使用视频地址获取视频封面

很多时候我们都需要使用视频的第一帧当作视频的封面,今天我们从uni-app的安卓app这个环境来实现下这个需求。 uniapp 安卓APP端(ios未测试) 方法:使用renderjs实现对DOM元素的操作,创建video元素获取视频转第一帧&am…

二十三种设计模式第二十一篇--解释器模式

解释器模式(Interpreter Pattern)是一种行为设计模式,它用于定义一种语言的语法结构和解释器,使得可以解释并执行特定的语法规则。该模式可以将复杂的语言表达式分解为更小的语法单元,并定义其解释过程。 解释器模式的…

Pandas操作Excel

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。 菜鸟教程:https://www.runoob.com/pandas/pandas-tutorial.html 读取Excel pd.read_excel(path,sheet_name,header) path:excel文件路径sheet_name:读取的sheet&#xff0…

下载的谷歌模型如何转为3dtiles

收费工具&#xff0c;学生党勿扰 收费金额1000元 已经购买过工具的大佬&#xff0c;可以免费更新 1 概述 上个月&#xff0c;写了一篇<<谷歌地图模型自动下载>>的文章&#xff0c;效果还不错&#xff0c;能够帮到一些同学。 但是&#xff0c;随着谷歌模型下载的越…

docker 安装 字体文件

先说一下我当前的 场景 及 环境&#xff0c;这样同学们可以先评估本篇文章是否有帮助。 环境&#xff1a; dockerphp8.1-fpmwindows 之所以有 php&#xff0c;是因为这个功能是使用 php 开发的&#xff0c;其他语言的同学&#xff0c;如果也有使用到 字体文件&#xff0c;那么…

MQ面试题3

1、讲一讲Kafka与RocketMQ中存储设计的异同&#xff1f; Kafka 中文件的布局是以 Topic/partition &#xff0c;每一个分区一个物理文件夹&#xff0c;在分区文件级别实现文件顺序写&#xff0c;如果一个Kafka集群中拥有成百上千个主题&#xff0c;每一个主题拥有上百个分区&am…

阿里13年员工自爆薪酬并坦言:虽然失业但还是赢麻了...

每月发薪资的那一天&#xff0c;是打工人最开心和盼望的日子&#xff0c;看到工资条&#xff0c;就会觉得之前辛苦的付出没有白费。 但是你期待过未来薪资上限是多少吗&#xff1f;你打算如何过这一生呢&#xff1f; 最近看到一个很吸引我的帖子&#xff1a;一85年阿里员工薪…

记录一次很傻逼的bug,希望大家引以为戒!

最近准备程序上线&#xff0c;测试上数据库连接是正常的&#xff0c;但是到正式上&#xff0c;数据库连接就一直报错&#xff0c;报错如下&#xff1a; 根据报错信息的提示&#xff0c;就是没有识别到url&#xff0c;但是因为正式服务器之前发布过其他的项目&#xff0c;是可以…

棕榈酰三肽-38——对额间纹,鱼尾纹,抬头纹和颈纹非常有效

简介 棕榈酰三肽-38由三个氨基酸组成&#xff0c;是一种双氧化的脂肽。这种肽的灵感源自于天然存在于胶原蛋白VI和层粘连蛋白中的一种三肽。 它可以在需要的地方&#xff0c;从内部重建肌肤&#xff0c;使皱纹平滑皮肤得到舒缓&#xff0c;尤其对额间纹&#xff0c;鱼尾纹&…

AI写作技巧,用ChatGPT写自媒体爆文的小技巧

Hi~我是专注于AI技术教程和项目实战的赤辰。 对于新手来说&#xff0c;要写出一篇引人入胜的自媒体文章并不容易&#xff0c;虽然ChatGPT可以帮我们完成写作过程的各个部分&#xff0c;但是&#xff0c;ChatGPT其实也并不能仅凭一个思路和一个主题就直接生成高质量的内容&…

Java 异常处理以及如何捕获和处理多个异常

捕捉和处理异常 在Java中&#xff0c;我们使用异常处理程序组件try&#xff0c;catch和finally块来处理异常。 为了捕获和处理异常&#xff0c;我们将try...catch...finally代码块放置在可能产生异常的代码周围。finally块是可选的。 try...catch...finally的语法为&#xf…

重学C++系列之STL库

一、什么是STL库 STL是“Standard Template Library”的缩写&#xff0c;中文翻译为“标准模板库”。CSTL是一套功能强大的C模板类&#xff0c;提供了通用的模板类和函数&#xff0c;这些模板类和函数可以实现多种流行和常用的算法和数据结构&#xff0c;如字符串操作、链表、队…

mybatisJava对象、list和json转换

1. 参考mybatis-plus mybatis Java对象、list和json转换 网上好多不靠谱&#xff0c;参考mybatis-plus中TableField&#xff0c;mybatis中自定义实现 这样不需要对象中属性字符串接收&#xff0c;保存到表中&#xff0c;都是转义字符&#xff0c;使用时还要手动转换为对象或者…

【UI自动化测试】Jenkins配置

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

棱镜七彩成为“软件供应链安全推进工作组”首批成员单位

2023年7月29日&#xff0c;由基础软件质量控制与技术评价工业和信息化部重点实验室&#xff08;以下简称“实验室”&#xff09;举办的软件供应链安全研讨会暨软件供应链安全推进工作组成立会议在京成功召开。 会上&#xff0c;实验室委托中国软件评测中心&#xff08;工业和信…

助力质检维护,基于超轻量级分割模型ege-unet开发构建水泥基建裂缝分割识别系统

在前面的博文&#xff1a; 《参数量仅有50KB的超轻量级unet变种网络egeunet【参数和计算量降低494和160倍】医疗图像分割实践》 初步学习和实践了最新的超轻量级的unet变种网络在医疗图像领域内的表现&#xff0c;在上文中我们就说过会后续考虑将该网络模型应用于实际的生产业…

GNN+RA 文献阅读-- GNN对RA的建模

简述&#xff1a;主要是几篇 如何利用GNN 对 资源分配进行建模的paper&#xff0c;【1】【2】都是对无线链路建模&#xff0c;【3】比较有参考性&#xff0c;【4】偏于RL&#xff0c;对GNN表述模糊。 用GNN建模网络的思路&#xff1a; 1.Graph 是有向图还是无向图&#xff1f…

HarmonyOS 开发基础(二)组件拼凑简单登录页面

一、简单登录页面 Entry Component /* 组件可以基于struct实现&#xff0c;组件不能有继承关系&#xff0c;struct可以比class更加快速的创建和销毁。*/ struct Index {State message: string Hello Worldbuild() {// https://developer.harmonyos.com/cn/docs/documentation/…

万应低代码 7 月重点更新内容速递

速览版 详情版 低代码开发能力提升 业务逻辑 业务逻辑是什么&#xff1f; 在万应低代码中&#xff0c;「业务逻辑」指的是应用程序中的核心规则和功能&#xff0c;它决定了数据如何被处理和操作。就像搭积木一样&#xff0c;业务逻辑告诉计算机在特定情况下如何运行和响应。比…