Java使用POI导出Excel文件

  • POI概述
  • Apache POI 下载
    • 依赖引用关系图如下所示:
    • 直接下载
    • Maven下载
  • POI实例
  • 总结

POI概述

HSSF 是 POI 项目的 Excel '97(-2007) 文件格式的纯 Java 实现。XSSF 是 POI 项目的 Excel 2007 OOXML (.xlsx) 文件格式的纯 Java 实现。
HSSF 和 XSSF 提供了读取电子表格创建、修改、读取和写入 XLS 电子表格的方法。他们提供:
为有特殊需要的人提供的低级结构
用于高效只读访问的 eventmodel api
用于创建、读取和修改 XLS 文件的完整用户模型 API
对于从纯 HSSF 用户模型转换的人,如果希望使用联合 SS 用户模型来支持 HSSF 和 XSSF,请参阅ss 用户模型转换指南。
生成电子表格的另一种方法是通过Cocoon序列化程序(但您仍将间接使用 HSSF)。使用 Cocoon,您可以通过简单地应用样式表并指定序列化程序来序列化任何 XML 数据源(例如,可能是用 SQL 输出的 ESQL 页面)。
如果您只是读取电子表格数据,请使用 org.apache.poi.hssf.eventusermodel 包或 org.apache.poi.xssf.eventusermodel 包中的 eventmodel api,具体取决于您的文件格式。
如果您正在修改电子表格数据,请使用 usermodel api。您也可以通过这种方式生成电子表格。
请注意,usermodel 系统比低级 eventusermodel 具有更高的内存占用,但主要优点是使用起来更简单。另请注意,由于新的 XSSF 支持的 Excel 2007 OOXML (.xlsx) 文件是基于 XML 的,因此处理它们的内存占用高于旧的 HSSF 支持的 (.xls) 二进制文件。
SXSSF(自 POI 3.8 beta3 起)
POI官方文档

Apache POI 下载

依赖引用关系图如下所示:

直接下载

点击进入官网下载Apache POI

Maven下载

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version>
</dependency>

POI实例

    @RequestMapping("/downloadExcel")public void downloadExcel(HttpServletResponse response) throws Exception{//创建Excel文件Workbook wb = new HSSFWorkbook();//生成sheetSheet sheet = wb.createSheet("POI测试sheet");//创建行Row row = null;//创建列Cell cell = null;//创建表头单元格样式CellStyle cs_header = wb.createCellStyle();//设置字体样式Font boldFont = wb.createFont();//设置文字类型boldFont.setFontName("宋体");//设置加粗boldFont.setBold(true);//设置文字大小boldFont.setFontHeightInPoints((short) 16);//应用设置的字体cs_header.setFont(boldFont);//设置边框下、左、右、上cs_header.setBorderBottom(BorderStyle.THIN);cs_header.setBorderLeft(BorderStyle.THIN);cs_header.setBorderRight(BorderStyle.THIN);cs_header.setBorderTop(BorderStyle.THIN);//水平居中cs_header.setAlignment(HorizontalAlignment.CENTER);//垂直居中cs_header.setVerticalAlignment(VerticalAlignment.CENTER);//前景填充色cs_header.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index);//设置前景填充样式cs_header.setFillPattern(FillPatternType.SOLID_FOREGROUND);//设置标题row = sheet.createRow(0);//设置单元格行高row.setHeightInPoints(24);//设置标题String[] headers=new String[]{"type字段ID标题","types字段ID标题","depName字段标题","offName标题","cDepIds字段标题","battleLineId字段标题","cardNumber字段标题","userId字段标题","startDate字段标题","endDate字段标题","cpName字段标题","isStorageList字段标题 与 powerUser字段标题"};//逐个设置标题样式for (int i = 0; i < headers.length; i++) {//创建单元格cell = row.createCell(i);//设置单元格内容cell.setCellValue(headers[i]);//设置单元格样式cell.setCellStyle(cs_header);}//创建文本单元格样式CellStyle cs_text = wb.createCellStyle();//创建文字设置Font textFont = wb.createFont();//设置文字类型textFont.setFontName("Consolas");//设置文字大小textFont.setFontHeightInPoints((short) 10);//应用设置cs_text.setFont(textFont);//设置边框cs_text.setBorderBottom(BorderStyle.THIN);cs_text.setBorderLeft(BorderStyle.THIN);cs_text.setBorderRight(BorderStyle.THIN);cs_text.setBorderTop(BorderStyle.THIN);//水平居中cs_text.setAlignment(HorizontalAlignment.CENTER);//垂直居中cs_text.setVerticalAlignment(VerticalAlignment.CENTER);//调取数据List<WzPickingApply> list = wzPickingApplyService.selectWzPickingApplyList();//记录总共多少列(由于接口查询出来的实体类集合,所以不好循环,使用)Integer cellSum = 0;//将数据写入表格for(int i=0; i<list.size(); i++){//将实体类集合转成string数组,通过‘,’,获取总共多少列String[] split = list.get(i).toString().split(",");cellSum=split.length;//创建行,由于0行是标题,所以+1row = sheet.createRow(i+1);//实体类集合不太好循环,所以逐一设置,如果是其他则可使用for循环WzPickingApplyVo wpa = (WzPickingApplyVo) list.get(i);row.createCell(0).setCellValue(wpa.getType()!=null?wpa.getType():'1');row.createCell(1).setCellValue(wpa.getTypes()!=null?wpa.getTypes():'2');row.createCell(2).setCellValue(wpa.getDepName()!=null?wpa.getDepName():"3");row.createCell(3).setCellValue(wpa.getOffName()!=null?wpa.getOffName():"4");row.createCell(4).setCellValue(String.valueOf(wpa.getCDepIds()!=null?wpa.getCDepIds():"5"));row.createCell(5).setCellValue(wpa.getBattleLineId()!=null?wpa.getBattleLineId():'6');row.createCell(6).setCellValue(wpa.getCardNumber()!=null?wpa.getCardNumber():"7");row.createCell(7).setCellValue(wpa.getUserId()!=null?wpa.getUserId():'8');SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");row.createCell(8).setCellValue(String.valueOf(wpa.getStartDate()!=null?wpa.getStartDate():df.format(Calendar.getInstance().getTime())));row.createCell(9).setCellValue(String.valueOf(wpa.getEndDate()!=null?wpa.getEndDate():df.format(Calendar.getInstance().getTime())));row.createCell(10).setCellValue(wpa.getCpName()!=null?wpa.getCpName():"9");row.createCell(11).setCellValue(String.valueOf(wpa.getIsStorageList()!=null?wpa.getIsStorageList():"10"));row.createCell(12).setCellValue(String.valueOf(wpa.getPowerUser()!=null?wpa.getPowerUser():"11"));//为每一个单元格设置样式for (int j=0;j<cellSum;j++){row.getCell(j).setCellStyle(cs_text);}}//合并单元格,横向sheet.addMergedRegionUnsafe(new CellRangeAddress(0, 0, 11, 12));sheet.addMergedRegionUnsafe(new CellRangeAddress(1,1,3,4));//竖着合并sheet.addMergedRegionUnsafe(new CellRangeAddress(1,list.size(),4,4));//设置单元格宽度自适应for (int i = 0; i <= cellSum; i++){sheet.autoSizeColumn((short)i,true); //自动调整列宽}//设置中文文件名称String fileName = URLEncoder.encode("POIExcel下载测试","UTF-8");//浏览器默认服务器传过去的是html,不是excel文件//设置响应类型:传输内容是流,并支持中文response.setContentType("application/octet-stream;charset=UTF-8");//设置响应头信息header,下载时以文件附件下载response.setHeader("Content-Disposition","attachment;filename="+fileName+".xls");//输出流对象OutputStream os = response.getOutputStream();wb.write(os);//强制刷新os.flush();os.close();wb.close();}

总结

目前这仅是讲解使用,如果做项目,封装一下更灵活,便于使用。

Java使用POI导出Excel文件相关推荐

  1. poi导出excel 损坏_急!!!java用poi导出excel文件,打开导出的文件时报错“文件错误,数据可能丢失”...

    展开全部 两个原因: 1.你的excel模版本身有问题,可以尝试新建一个模版. 2.你的excel使用了一e68a8462616964757a686964616f31333365643662些POI不 ...

  2. java的poi导出Excel文件

    首先创建 实体类: package cn.temptation.domain;import java.util.Date;import com.fasterxml.jackson.annotation ...

  3. POI导出Excel文件时,单元格内文字竖排、横排默认不展示,必须点击一下问题解决

    //创建单元格样式设置CellStyle cs_vertical = wb.createCellStyle();//设置字体Font textFont = wb.createFont();textFo ...

  4. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

  5. Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开

    使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...

  6. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  7. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  8. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  9. Java操作poi导出Excel自定义字体颜色

    Java操作poi导出Excel自定义字体颜色 功能介绍 POI操作Excel 第一步创建一个导出的工具类 整体定义表格字体样式 自定义表格字体样式 总结 功能介绍 Apache POI 是用Java ...

  10. java使用poi生成Excel文件并合并单元格

    java使用poi生成Excel文件并合并单元格        业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...

最新文章

  1. 如何使用vue.js 实现前台html页面和后台的数据绑定
  2. 宏基因组学揭示海洋微生物及其病毒的生态学
  3. 判断元素是否在ndarray_暨南大学药学院考研~手性的判断与相关介绍
  4. 看了这篇C++笔记,你出去行走江湖我就放心了【C++】
  5. python matplotlib.pyplot如何绘制实时图表?(实时绘制、更新图表、实时更新、动态窗口)plt.ion() plt.clf() plt.pause() plt.ioff()
  6. Caused by: android.os.NetworkOnMainThreadException错误解决办法
  7. git push出错 remote: Hook Error: request authorize server: curl error: Couldn't resolve host name
  8. 插件一:JAVA微信砍价活动源码分享[商品帮砍到0元,免费领取奖品]
  9. 如何判断mysql死锁_MySQL 死锁问题分析
  10. 超键、候选键、主键、外键区别?
  11. Java——字符串分割[split()]和截取[substring()]
  12. Asp.Net WebAPI传递json对象、后台手动接收参数
  13. 2022五一杯数学建模
  14. C#操作Excel数据库方法
  15. 计算机名改为名字的拼音,批量转换中文文件名为拼音
  16. React antd的table表格之嵌套表格
  17. cesium entity使用
  18. ArcEngine创建要素类_线图层
  19. 2020icpc小米决赛K
  20. 史上最详细唇语识别数据集综述

热门文章

  1. 川大scu显示无法连接认证服务器,win10锐捷客户端无法认证服务器怎么办?-处理win10锐捷客户端认证失败的方法 - 河东软件园...
  2. ios共享账号公众号_我的世界 minecraft 国际版 非网易版 ios下载账号分享 公众号 iphone ipad...
  3. 关于IP地址定位、IP查询和IP地址库 你想了解的历史都在这里
  4. 一文解析SQLServer数据库
  5. 访问 Notes/Domino 数据的定制 DXL 框架
  6. Axure RP 8.0安装和汉化
  7. Eclipse反编译jad插件安装
  8. #百度云直链下载-IDM+油猴插件
  9. 网络爬虫-爬取飞常准航班信息
  10. Office系列完全干净卸载工具合集(最全)