当前位置: 首页 > news >正文

学习poi导出excel之XSSFWorkbook

1 基本介绍

POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。

HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。
XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。
SXSSF:是在XSSF基础上,POI3.8版本开始提供的支持低内存占用的操作方式,扩展名为.xlsx。
eg:比如在项目导入时会检测此时的表格结尾是xls还是xlsx后缀,在new对象时就会里用到 

 提示:SXSSFWorkbook 设置内存中最多只有1000行数据,当超过这个数据时,就将内存之前的数据删除,并且会在硬盘中生成临时文件。从而保证了低内存消耗。
注:针对 SXSSF Beta 3.8下,会有临时文件产生

2 XSSFWorkbook 生成excel

    // 1、创建工作表
    XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
    XSSFSheet xssfSheet = xssfWorkbook.createSheet("sheet名称");
    XSSFRow xssfRow; // 行
    XSSFCell xssfCell; // 列
    // 2、在sheet中创建行,注意判断 第一行是否已经创建,否则会覆盖之前的数据
    xssfRow = xssfSheet.getRow(1);
    if (xssfRow == null) {
        xssfRow = xssfSheet.createRow(1);
    }
    // 3、创建单元格
    xssfCell = xssfRow.createCell(1);
    // 4、设置单元格内容
    xssfCell.setCellValue("测试"); 
    // 5、导出excel
   response.setCharacterEncoding("UTF-8");

   response.setHeader("content-Type", "application/vnd.ms-excel");

   if (fileName.matches("^.+\\.(?i)(xls)$") || fileName.matches("^.+\\.(?i)(xlsx)$"))

   { fileName = fileName.substring( 0 ,fileName.lastIndexOf("."));

}

   response.setHeader("Content-Disposition", "attachment;filename=" +                  URLEncoder.encode(fileName, "UTF-8")+".xlsx" );

   out = response.getOutputStream();

   workbook.write(out);

   out.flush();
   out.close();
   xssfWorkbook.close();

 3 获取合并单元格的值

重要其他知识请参考【poi导出excel之XSSFWorkbook】_一个搬砖的农民工的博客-CSDN博客_xssfworkbook

相关文章:

  • 测试工程师正遭「革命」 AI将改写测试模式
  • SpringBoot 的配置
  • FineReport报表设计工具- 配置DB2外接数据库(1)
  • 【NI Multisim 14.0编辑环境——工具栏】
  • css中动画之transition
  • 【HTML】再见2022!一起来写一个响应式跨年倒计时吧!(附源码)
  • Spring MVC框架学习
  • 第004课 - 项目微服务架构图
  • BOSS直聘自动投简历的实现过程
  • 【高阶数据结构】二叉树的非递归遍历
  • 【LeetCode】从前序与中序遍历序列构造二叉树 [M](二叉树重构)
  • C++GUI之wxWidgets(6)-一步步做zip精灵(1)
  • [vue element-ui]JAVA POST请求
  • 【C语言 全局 整形变量 布尔变量 数组变量 指针变量 结构体位域变量 枚举变量被其他.C文件相互访问】
  • MyBatis的增删改查操作
  • [译]前端离线指南(上)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • ES2017异步函数现已正式可用
  • Laravel Telescope:优雅的应用调试工具
  • MySQL用户中的%到底包不包括localhost?
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Tornado学习笔记(1)
  • 大数据与云计算学习:数据分析(二)
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 我这样减少了26.5M Java内存!
  • 一个项目push到多个远程Git仓库
  • 2017年360最后一道编程题
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #ifdef 的技巧用法
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #stm32驱动外设模块总结w5500模块
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (javascript)再说document.body.scrollTop的使用问题
  • (Note)C++中的继承方式
  • (ros//EnvironmentVariables)ros环境变量
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (七)c52学习之旅-中断
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转) ns2/nam与nam实现相关的文件
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .chm格式文件如何阅读
  • .dwp和.webpart的区别
  • .FileZilla的使用和主动模式被动模式介绍
  • .gitignore文件忽略的内容不生效问题解决
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net refrector
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 发展历程