HSSFWorkbook导出Excel
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相关推荐
- 初试poi HssfWorkBook导出excel
昨天看了一个例子,是用户在填写注册信息的时候,能够导出该用户的注册信息,现在仅仅实现了这个功能,这是直接在servlet里面写的! protected void doGet(HttpServletRe ...
- java使用POI的HSSFWorkbook导出excel模板添加各种校验
java导出excel模板添加各种校验 添加值域(下拉列) /*** @description 设置某些列的值只能输入预制的数据,显示下拉框.* @param sheet 模板sheet页(需要设置下 ...
- POI HSSFWorkbook导出Excel到本地电脑
由于开发环境限制,其中的引用可能版本比较老,可作为参考 Map<String,List<String>> map = new HashMap<String, List&l ...
- HSSFWorkbook导出Excel数据换行和设置行高
想导出数据格式: 第一步:定制显示格式 HSSFCellStyle styleCon_left_line = wb.createCellStyle(); styleCon_left_line.clon ...
- Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载
场景 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别 HSSFWorkbook: 是操作Excel2003以前(包括2003)的版本,扩展名是.xls:导出exce ...
- java excel sheet页_Java导出Excel Sheet页
1.问题背景 导出Excel表格时,首先要生成Sheet页,下面将介绍如何生成Sheet页 2.实现源码 /** * * @Project: * @Title:ExcelExport.java * @ ...
- 复杂的POI导出Excel表格(多行表头、合并单元格)
poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...
- Java中导入、导出Excel——HSSFWorkbook 使用
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- Java excel poi 使用HSSFWorkbook 导出的excel wps能打开office打不开问题解决 Excel无法打开xx.xlsx,因为文件格式或扩展名无效......
1.在开发代码中涉及到报表导出 xlsx文件 office打不开问题 JavaPOI导出Excel有三种形式,他们分别是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWo ...
最新文章
- Commun. Biol. | 人工智能加速抗生素发现
- OpenPitrix 是一款开源多云应用程序管理系统
- 魔兽世界工程学技能1-375冲级攻略
- C++/OpenCV:error C4996: ‘fopen‘: This function or variable may be unsafe.
- JDK1.8 中文文档下载与在线阅读
- NET在后置代码中输入JS提示语句(背景不会变白)
- 防止linux系统文件被误删除,Linux系统防止误删除文件
- Centos7安装官方JDK
- JavaScript小数运算出现多位的解决办法
- CF1039E Summer Oenothera Exhibition
- 热血传奇客户端wil文件中文含义详解
- 李宏毅机器学习2022-hw2
- java查询mongodb数据_从mongodb中查询数据
- redis 中pipline,mset, mget使用对比
- 科学与财富杂志科学与财富杂志社科学与财富编辑部2022年第27期目录
- 帆软报表扩展列计算同比环比
- 360杀毒软件无视宏病毒!
- python出现syntaxerror_Python SyntaxError语法错误原因及解决
- 【大数据存储技术】实验2:MongoDB数据库的部署和操作
- 春节假期我读过的那些书