首页 > 其他分享 >Excel导入导出

Excel导入导出

时间:2023-12-21 23:35:37浏览次数:36  
标签:Excel 导出 导入 内存 版本 数据 硬盘

POI--------》Workbook接口

  • HSSFWorkbook :

这个实现类是我们早期使用最多的对象,它可以操作 Excel2003 以前(包含 2003)的所有 Excel 版本。在 2003 以前 Excel 的版本后缀还是.xls

  • XSSFWorkbook :

这个实现类现在在很多公司都可以发现还在使用,它是操作的 Excel2003--Excel2007 之间的版本,Excel 的扩展名是.xlsx

  • SXSSFWorkbook :

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

 

HSSFWorkbook

它是 POI 版本中最常用的方式,不过:

  • 它的缺点是 最多只能导出 65535 行,也就是导出的数据行数超过这个数据就会报错;
  • 它的优点是 不会报内存溢出。(因为数据量还不到 7w 所以内存一般都够用,首先你得明确知道这种方式是将数据先读取到内存中,然后再操作)

XSSFWorkbook

  • 优点:这种形式的出现是为了突破HSSFWorkbook的 65535 行局限,是为了针对 Excel2007 版本的 1048576 行,16384 列,最多可以导出 104w 条数据;
  • 缺点:伴随的问题来了,虽然导出数据行数增加了好多倍,但是随之而来的内存溢出问题也成了噩梦。因为你所创建的 book,Sheet,row,cell 等在写入到 Excel 之前,都是存放在内存中的(这还没有算 Excel 的一些样式格式等等),可想而知,内存不溢出就有点不科学了!!!

SXSSFWorkbook

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

优点:

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

缺点:

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

根据这样几种情况做分析选择:

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

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

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

标签:Excel,导出,导入,内存,版本,数据,硬盘
From: https://www.cnblogs.com/KL2016/p/17920337.html

相关文章

  • Excel-做抽奖、报告分组
    还在为了公司抽奖、报告分组做籤筒吗?来试试看Excel的随机函数吧Randbetween(最小值,最大值):从最小值和最大值的范围内产生一个整数Choose(序号,可供选择的选项):根据序号选择对应选项Rand():产生0到1的随机数Roundup(数值,位数):无条件进位函数例子:=INDEX(C3:C14,RANDBETWEEN(......
  • openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命
    openGauss学习笔记-168openGauss数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据168.1操作场景gs_restore是openGauss数据库提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录......
  • Excel-表格有重复资料该怎麽办?
    1.标注重复信息框选单元格——开始——条件格式——突出显示单元格规则——重复值——确定框选单元格——开始——条件格式——新建规则——使用公式确定要设置格式的单元格——输入公式——修改后一参数值为相对参照——格式——填充——选择颜色——确定注:公式例子:=countif($E$......
  • Excel-保护表格必学四招
    1、如果想要保护excel表格内容不被篡改,审阅--保护工作簿来设置密码但是一定设定密码,所有的表格都不能被修改2、如果有部分单元格需要使用,则可以选中单元格--设置单元格格式--保护--取消锁定3、如果有些计算公式不想被人知道,可以选中单元格---设置单元格格式--保护--勾选隐......
  • Excel-最强函数搭档INDEX&MATCH(指数+寻找)
    1、VLOOKUP函数的缺点有一个很大的缺点就是如果要搜寻的栏位不是在表格的最左侧,或是表格采用了横向排列的话,无用武之地。如果是横向表格,而要查询的资料行也恰巧是第一行的话,可以使用HLOOKUP函数,Hlookup与vlookup类似,只是查询方向不同=HOOKUP(被查询值,查询的范围,要传回的行数)困境......
  • 【每日问答】IDEA怎么全局设置Maven配置,而不需要每次导入项目后每次都要设置
    在大多数集成开发环境(IDE)中,你可以通过进行全局配置来避免每次导入项目都要设置Maven。我以IntelliJIDEA为例,其他IDE的步骤可能会有些不同:打开IntelliJIDEA,并确保你已经安装了Maven插件。转到菜单栏,选择"File"(文件)>"OtherSettings"(其他设置)>"DefaultSettings"(默认......
  • vue3 + xlsx 实现 excel 导入web页面解析成json数据
    vue3+xlsx实现excel导入web页面并解析成json数据fileIipt动态创建的标签,一定要用户点击事件触发,不然文件选择框的弹出会被拦截,无法弹出。意思就是下面这段关键代码要用一个事件区触发执行,不能主动执行(比如:vue的钩子)import*asXLSXfrom'xlsx'//v:"^0.18.5"letfil......
  • Excel动态图表有多少种类型,你知道哪些?
    折线图:折线图是最常见的动态图表类型之一,它可以清晰地展现数据随时间变化的趋势。在Excel中,您可以轻松创建动态折线图,使数据的变化更加生动。柱状图:动态柱状图可以清晰地比较不同类别的数据,并随着数据的变化而自动更新。这种图表类型在展示多个数据项之间的对比时非常有用。饼图:......
  • SheetJs 导出数据
    1.Excel数据导出根据后端数据导出数据源样式list=[  {code:'610230',name:'长尺',num:2,price:3.5,amount:7,type:1,status:2},  {code:'610230',name:'圆规',num:6,price:5,amount:30,type:1,status:1},  ......
  • SheetJs 导入数据
    html<a(click)="import()">导入</a><input#importExcelInput[hidden]="true"type="file"(change)="onFileChange($event)"multiple="false"/>tsimport(){letinput=this.importE......