不管是Web开发还是桌面开发,对办公软件的操作是常有的需求,如对微软Excel电子表格的操作,经常需要对一些数据导出到Excel文件,或将一个Excel文件的数据读取到数据库。在java操作Excel可以使用POI组件或JXL组件。

POI全称PoorObfuscation Implementation ,是Apache组件的一个开源项目,可以对微软的Office一系列办公软件进行读写操作。

下载jar

官方下载地址:Apache POI - Download Release Artifacts,目前最新版本为POI 4.1.0。

Apache POI发行版支持多种文档文件格式。这种支持在几个Jar文件中提供。并非每种格式都需要所有jar。可到下面的网址看详细的说明,看需求导入需要的jar包

Apache POI -Component Overview:Apache POI - Component Overview

使用之前导入jar包

使用POI组件创建Excel,主要使用的是org.apache.poi.hssf.usermodel.HSSFWorkbook类和org.apache.poi.hssf.usermodel.HSSFSheet类。HSSFWorkbook表示为Excel工作簿,是最为重要的类,获取HSSFWorkbook对象,再从HSSFWorkbook中获取工作表对象。

HSSFWorkbook类常用方法如下

createSheet():创建Excel工作表 返回类型为HSSFSheeet

setSheetName():设置Excel工作表的名称,语法结构如下

public void setSheetName(int sheetIx,String name)

参数sheetLx:指定需要修改名称的工作表的索引,索引是从0开始

参数 name:设置工作表的名称

setSelectTab():设置Excel文件中哪一个工作表为选择状态,语法如下

public void setSelectedTab(int index) 参数 index 设置选择状态的工作表的索引(从0开始)

writer()方法:将缓存中创建的Excel文件对象以流的形式写入文件中

public void writer(OutputStream out)参数:stream 文件输出流的对象,将数据写入之前,需要创建此文件输出流的对象。

导出Excel:(为了方便演示,下面代码写在Servlet中的doGet方法中,数据也是手动添加的,如数据需要从数据库中取,可以向从数据库查询数据,返回List集合,遍历集合从而产生数据行,注意如果使用Map来存放数据,应使用LinkedHashMap来保证有序,使标题和数据对应)

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建HSSFWorkbook对象HSSFWorkbook wb = new HSSFWorkbook();//建立sheet对象HSSFSheet sheet=wb.createSheet("成绩表");//在sheet里创建第一行,参数为行索引HSSFRow row1=sheet.createRow(0); //创建单元格HSSFCell cell=row1.createCell(0); //设置单元格内容cell.setCellValue("学生成绩表");       //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));//在sheet里创建第二行HSSFRow row2=sheet.createRow(1);   //创建单元格并设置单元格内容row2.createCell(0).setCellValue("姓名");row2.createCell(1).setCellValue("班级");   row2.createCell(2).setCellValue("语文成绩");row2.createCell(3).setCellValue("数学成绩");    row2.createCell(4).setCellValue("英语成绩");   //在sheet里创建第三行HSSFRow row3=sheet.createRow(2);row3.createCell(0).setCellValue("小明");row3.createCell(1).setCellValue("1班");row3.createCell(2).setCellValue(80);    row3.createCell(3).setCellValue(75);   row3.createCell(4).setCellValue(88);   HSSFRow row4=sheet.createRow(3);row4.createCell(0).setCellValue("小红");row4.createCell(1).setCellValue("1班");row4.createCell(2).setCellValue(82);   row4.createCell(3).setCellValue(70);   row4.createCell(4).setCellValue(90);//输出Excel文件OutputStream output=response.getOutputStream();response.reset();//设置响应头,response.setHeader("Content-disposition", "attachment; filename=Student.xls");response.setContentType("application/msexcel");       wb.write(output);output.close();}

效果

设置样式,如字体、单元格等(详细的可以去看官方文档)

 // 设置单元格的横向和纵向对齐方式,  cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //设置背景颜色
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);

Java使用POI导出Excel相关推荐

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

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

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

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

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

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

  4. Java和poi导出excel报表

    一:poi jar下载地址:点击打开链接: 二:工程截图: 三:运行效果截图: 四:源代码: Student.java: package com.poi.bean;import java.util.D ...

  5. Java使用POi导出Excel(包含图片)

    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

  6. java 使用poi导出excel,可控制固定前2列固定标头排版,带统计数据格式的

    使用poi导出排版漂亮的excel文件 html代码: <button class="btn btn-link" ng-model="exportExcel&quo ...

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

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

  8. java通过poi导出excel和pdf

    [背景] 由于各户的需求,所以需要增加导出excel这个功能,其实大部分系统都需要这个导出功能的,所以这里也就不详细说明具体导出的背景了O(∩_∩)O~ 干完导出excel将现有的导出pdf也进行了独 ...

  9. java使用poi导出Excel表发回浏览器或是保存到本地

    在实际工作中不可避免的会遇上统计.导出报表的工作,我自己整理了一份导出Excel代码放到这里,即为了分享知识,也是对自己的总结 首先导入依赖 <dependency><groupId ...

  10. java使用poi导出excel太慢

    场景是查询数据然后导出excel,接口响应太慢. 处理接口慢,首先要找出哪个环节慢. 打日志看各环节花费时间,10W条数据 关联查询sql花费 3s,导出excel花费5S,响应传输时间很快不是关键问 ...

最新文章

  1. 快到极致的Android模拟器——Genymotion
  2. php yii gridview字符串截取,Yii2-GridView常用代码块、笔记
  3. “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛I 充分利用学习卡(粉)...
  4. Apache Spark源码走读之6 -- 存储子系统分析
  5. 图片尺寸对分类迭代次数和准确率的影响
  6. C#面向对象设计模式纵横谈——6.Prototype 原型模式(创建型模式)
  7. vue 实例化几种方式_Vue双向数据绑定
  8. Nacos: Namespace 和 Endpoint 在生产环境下的最佳实践
  9. 通过kubeadm安装kubernetes 1.13.2
  10. 8051单片机的中断发送
  11. 换IP的几种常见方法
  12. vue结合elmentui实现前端分页
  13. WPS内嵌图片怎样使用Java获取图片?
  14. java 摄像头 视频_javaCV-摄像头实时视频
  15. oracle获取某年第一天和最后一天,Oracle取得本月、本年第一天和最后一天
  16. SpringCloud从入门到精通教程/SpringCloud Alibaba从入门到精通教程
  17. 蚂蚁金服2018CIKM中GEM算法《Heterogeneous Graph Neural Networks for Malicious Account Detection》
  18. Android Dialog隐藏消失时软键盘无法收回问题解决
  19. GPS 点可视化(英文地图打点,热力图,测距)
  20. 该shi的垃圾短信,为何屡禁不止?有何猫腻?

热门文章

  1. c语言plc编程软件下载,罗克韦尔plc编程软件下载-2017罗克韦尔plc编程软件V21.00 官方最新版 - 极光下载站...
  2. kali wifi密码 破解
  3. 【dsp】基于dsp28335的称重系统设计
  4. 超强、超详细Redis入门教程
  5. App首次安装 - 授权网络访问的坑
  6. 【离散数学】集合论 第三章 集合与关系(4) 集合的归纳定义、归纳证明、数学归纳法第一/二原理
  7. Linux界面介绍及基础知识
  8. 阿里 java 变量命名规范_阿里巴巴Java开发手册-命名规约
  9. 10多年IT从业者手把手教你备考信息系统项目管理师(简称高项)
  10. python达内培训视频