学习poi导出excel之XSSFWorkbook

发布于:2023-04-27 ⋅ 阅读:(310) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到