HSSFWorkbook导出Excel

  • POI导出Excel的三种 workbook的区别
  • maven依赖
  • 代码实现

POI导出Excel的三种 workbook的区别

HSSFWorkbook:
针对EXCEL 2003版本,扩展名为.xls,此种的局限就是导出的行数最多为65535行。因为导出行数受限,不足7万行,所以一般不会发送内存溢出(OOM)的情况
XSSFWorkbook:
其对应的是EXCEL2007+ ,扩展名为.xlsx ,这种形式的出现是由于第一种HSSF的局限性产生的,因为其导出行数较少,XSSFWorkbook应运而生,最多可以导出104万行。不过这样就伴随着一个问题–OOM内存溢出。因为使用XSSFWorkbook创建的book sheet row cell 等是存在内存中的,并没有持久化到磁盘上,那么随着数据量的增大,内存的需求量也就增大。那么很有可能出现 OOM了,那么怎么解决呢?
SXSSFWorkbook:
SXSSFWorkbook可以根据行数将内存中的数据持久化写到文件中。(用内存换导出的数据量)此种的情况就是设置最大内存条数,比如设置最大内存量为5000行, new SXSSFWookbook(5000),当行数达到 5000 时,把内存持久化写到文件中,以此逐步写入,避免OOM。这样就完美解决了大数据下导出的问题

maven依赖

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>

代码实现

//Controller层
@GetMapping("/exportData")public void exportData(HttpServletResponse res){service.exportData(res);}
//Service实现层
String[] header = {"编号","姓名"};
@Overridepublic void exportData(HttpServletResponse res) {List<Goods> goods = new ArrayList<>();for (int i = 0; i < 10; i++) {Goods good = new Goods();good.setId(String.valueOf(i));good.setName("我是第"+i+"号");goods.add(good);}try(HSSFWorkbook workbook = new HSSFWorkbook()){//设置导出的文件的名字String fileName = "我是一份导出文件.xls";//创建sheet页HSSFSheet sheet = workbook.createSheet("页1");//创建第一行HSSFRow row = sheet.createRow(0);//表头for (int i = 0; i < 2; i++) {//创建单元格,第i列HSSFCell cell = row.createCell(i);if(i == 0){cell.setCellValue(header[i]);}else {cell.setCellValue(header[i]);}}int rowNum = 1;for (int i = 0; i < goods.size(); i++) {HSSFRow row1 = sheet.createRow(rowNum);row1.createCell(0).setCellValue(goods.get(i).getId());row1.createCell(1).setCellValue(goods.get(i).getName());rowNum++;}res.setContentType("application/octet-stream");res.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));res.flushBuffer();workbook.write(res.getOutputStream());}catch (Exception e){logger.warning("出错了");}}

HSSFWorkbook导出Excel相关推荐

  1. 初试poi HssfWorkBook导出excel

    昨天看了一个例子,是用户在填写注册信息的时候,能够导出该用户的注册信息,现在仅仅实现了这个功能,这是直接在servlet里面写的! protected void doGet(HttpServletRe ...

  2. java使用POI的HSSFWorkbook导出excel模板添加各种校验

    java导出excel模板添加各种校验 添加值域(下拉列) /*** @description 设置某些列的值只能输入预制的数据,显示下拉框.* @param sheet 模板sheet页(需要设置下 ...

  3. POI HSSFWorkbook导出Excel到本地电脑

    由于开发环境限制,其中的引用可能版本比较老,可作为参考 Map<String,List<String>> map = new HashMap<String, List&l ...

  4. HSSFWorkbook导出Excel数据换行和设置行高

    想导出数据格式: 第一步:定制显示格式 HSSFCellStyle styleCon_left_line = wb.createCellStyle(); styleCon_left_line.clon ...

  5. Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载

    场景 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别 HSSFWorkbook: 是操作Excel2003以前(包括2003)的版本,扩展名是.xls:导出exce ...

  6. java excel sheet页_Java导出Excel Sheet页

    1.问题背景 导出Excel表格时,首先要生成Sheet页,下面将介绍如何生成Sheet页 2.实现源码 /** * * @Project: * @Title:ExcelExport.java * @ ...

  7. 复杂的POI导出Excel表格(多行表头、合并单元格)

    poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...

  8. Java中导入、导出Excel——HSSFWorkbook 使用

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  9. Java excel poi 使用HSSFWorkbook 导出的excel wps能打开office打不开问题解决 Excel无法打开xx.xlsx,因为文件格式或扩展名无效......

    1.在开发代码中涉及到报表导出 xlsx文件 office打不开问题 JavaPOI导出Excel有三种形式,他们分别是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWo ...

最新文章

  1. Commun. Biol. | 人工智能加速抗生素发现
  2. OpenPitrix 是一款开源多云应用程序管理系统
  3. 魔兽世界工程学技能1-375冲级攻略
  4. C++/OpenCV:error C4996: ‘fopen‘: This function or variable may be unsafe.
  5. JDK1.8 中文文档下载与在线阅读
  6. NET在后置代码中输入JS提示语句(背景不会变白)
  7. 防止linux系统文件被误删除,Linux系统防止误删除文件
  8. Centos7安装官方JDK
  9. JavaScript小数运算出现多位的解决办法
  10. CF1039E Summer Oenothera Exhibition
  11. 热血传奇客户端wil文件中文含义详解
  12. 李宏毅机器学习2022-hw2
  13. java查询mongodb数据_从mongodb中查询数据
  14. redis 中pipline,mset, mget使用对比
  15. 科学与财富杂志科学与财富杂志社科学与财富编辑部2022年第27期目录
  16. 帆软报表扩展列计算同比环比
  17. 360杀毒软件无视宏病毒!
  18. python出现syntaxerror_Python SyntaxError语法错误原因及解决
  19. 【大数据存储技术】实验2:MongoDB数据库的部署和操作
  20. 春节假期我读过的那些书

热门文章

  1. 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫
  2. linux yum的epel,CentOS使用EPEL YUM源教程
  3. 生成式AI,ChatGPT和自动驾驶的技术趋势漫谈
  4. 有一种倒下叫站起, 有一种陨落叫飞翔 —— 献给刘翔
  5. 胡兵伦敦时装周圆满收官 引领潮流趋势传递时尚态度
  6. mybatis各种小知识点一
  7. 浪潮信息联合宁盾打造统一身份管理解决方案 完善客户信息建设
  8. Bootstrap(前端开发框架一)
  9. 数据分析概述excel
  10. 资金互助社学习园地(二) 存贷挂钩---金融机构实现存贷两旺的利器