hi~ 好久不见 小伙伴们,最近比较忙,没什么时间写,今天给大家分享的是JAVA如何导出EXCEL表格,因为最近有做这样一个功能,所以分享出来,如有不对之处,敬请指正。

在许多企业办公系统中,经常会有用户要求,需要对数据进行统计并且可以直接下载Excel文件,这样子的话,既然客户提出了要求,我们就应该去满足吖,毕竟客户是上帝嘛,那么我们如何去实现呢?且看我为你一一道来。

POI简介:Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。

现在用的比较多的都是用POI技术来导出或者导入Excel,所以我们就用POI吧,用POI导出Excel我们首先要下载所需的jar包然后导入到我们的项目中,用maven的同学只需找到相关

依赖加入到pom.xml里面即可。

1. 下载jar包:

官方下载:http://poi.apache.org/download.html这里可以下载到它的最新版本和文档,目前最新版本是3.7,这里使用比较稳定的3.6版。

百度网盘下载:https://pan.baidu.com/s/1mjhoaWK  密码:pkur

2. 将jar包加入到项目中:

将下载好的jar包加入到WEBINFO目录下的lib文件夹中,Eclipse用户选中jar包然后右击选择Build Path选项, Idea用户选中jar包然后右击选择Add as Library选项即可。

如果是用maven的可自行到maven中央仓库搜索poi然后选择对应的版本即可,也可以直接将下面代码复制到pom.xml。

org.apache.poi

poi

3.6

小提示:用maven引入依赖jar包的可能会遇到包引用不到的bug,但是maven依赖确实已经引入了,而且没有任何报错,但是只要一引用  org.apache.poi.hssf.usermodel下面的类

就会报错,报错内容为:Caused by: java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook。

3. Jakarta POI HSSF API组件:

HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,有以下几种常用的对象:

常用组件:

HSSFWorkbook     excel的文档对象

HSSFSheet            excel的表单

HSSFRow               excel的行

HSSFCell                excel的格子单元

HSSFFont               excel字体

样式:

HSSFCellStyle         cell样式

4.基本操作步骤:

首先,我们应该要知道的是,一个Excel文件对应一个workbook,一个workbook中有多个sheet组成,一个sheet是由多个行(row)和列(cell)组成。那么我们用poi要导出一个Excel表格

的正确顺序应该是:

1、用HSSFWorkbook打开或者创建“Excel文件对象”

2、用HSSFWorkbook对象返回或者创建Sheet对象

3、用Sheet对象返回行对象,用行对象得到Cell对象

4、对Cell对象读写。

5、将生成的HSSFWorkbook放入HttpServletResponse中响应到前端页面

5. 导出Excel应用实例:

工具类代码:

packagecom.yq.util;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

public classExcelUtil {/*** 导出Excel

*@paramsheetName sheet名称

*@paramtitle 标题

*@paramvalues 内容

*@paramwb HSSFWorkbook对象

*@return

*/

public staticHSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){//第一步,创建一个HSSFWorkbook,对应一个Excel文件

if(wb == null){

wb= newHSSFWorkbook();

}//第二步,在workbook中添加一个sheet,对应Excel文件中的sheet

HSSFSheet sheet =wb.createSheet(sheetName);//第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制

HSSFRow row = sheet.createRow(0);//第四步,创建单元格,并设置值表头 设置表头居中

HSSFCellStyle style =wb.createCellStyle();

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//创建一个居中格式//声明列对象

HSSFCell cell = null;//创建标题

for(int i=0;i

cell=row.createCell(i);

cell.setCellValue(title[i]);

cell.setCellStyle(style);

}//创建内容

for(int i=0;i

row= sheet.createRow(i + 1);for(int j=0;j

row.createCell(j).setCellValue(values[i][j]);

}

}returnwb;

}

}

控制器代码:

@Controller

@RequestMapping(value= "/report")public class ReportFormController extendsBaseController {

@Resource(name= "reportService")privateReportManager reportService;/*** 导出报表

*@return

*/@RequestMapping(value= "/export")

@ResponseBodypublic void export(HttpServletRequest request,HttpServletResponse response) throwsException {//获取数据

List list =reportService.bookList(page);//excel标题

String[] title = {"名称","性别","年龄","学校","班级"};//excel文件名

String fileName = "学生信息表"+System.currentTimeMillis()+".xls";//sheet名

String sheetName = "学生信息表";for (int i = 0; i < list.size(); i++) {

content[i]= newString[title.length];

PageData obj=list.get(i);

content[i][0] = obj.get("stuName").tostring();

content[i][1] = obj.get("stuSex").tostring();

content[i][2] = obj.get("stuAge").tostring();

content[i][3] = obj.get("stuSchoolName").tostring();

content[i][4] = obj.get("stuClassName").tostring();

}//创建HSSFWorkbook

HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);//响应到客户端

try{this.setResponseHeader(response, fileName);

OutputStream os=response.getOutputStream();

wb.write(os);

os.flush();

os.close();

}catch(Exception e) {

e.printStackTrace();

}

}//发送响应流方法

public voidsetResponseHeader(HttpServletResponse response, String fileName) {try{try{

fileName= new String(fileName.getBytes(),"ISO8859-1");

}catch(UnsupportedEncodingException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

response.setContentType("application/octet-stream;charset=ISO8859-1");

response.setHeader("Content-Disposition", "attachment;filename="+fileName);

response.addHeader("Pargam", "no-cache");

response.addHeader("Cache-Control", "no-cache");

}catch(Exception ex) {

ex.printStackTrace();

}

}

}

前端页面代码:

导出Excel

$('#js-export').click(function(){

window.location.href="/report/exportBooksTable.do;});

好啦,到此大功告成,谢谢大家耐心看完,喜欢的可以支持一下,有了大家的鼓励我会更有动力,2018年第一篇博客,希望自己的技术能越来越精进,为此我要坚持写更多的博

客,也要多到博客园来逛一逛,多向大家学习。也祝福广大博客园的朋友新年都能实现自己的愿望。加油!

java导出excel_JAVA导出EXCEL表格相关推荐

  1. 安卓mysql导出excel_Android开发实现的导出数据库到Excel表格功能【附源码下载】...

    本文实例讲述了Android开发实现的导出数据库到Excel表格功能.分享给大家供大家参考,具体如下: 之前一直在电脑上用Excel表格记录家庭帐单,不久前重装系统不小心干掉了,伤心了好久,那可是我记 ...

  2. 使用EasyPoi 导出简单的Excel表格。

    最近一个项目用到了到处Excel表格. 1.首先 通过Maven 添加jar包. <!--导出excel--><dependency><groupId>org.je ...

  3. 利用EasyExcel完整的springboot +vue前后端导出并下载excel表格

    文章目录 写在前面 正文 1. springboot后端引入easyexcel及使用 1.1 引入依赖 1.2 接口serviceImpl方法 1.3 提供一个对list集合去重的方法(根据相同key ...

  4. 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...

    如何将百度指数数据导出到Excel表格 第一步:打开CAD.CAD命令行输入"Li"."选择对象"选需要提取坐标的多段线.回车. 第二步:将CAD文本框中的数据 ...

  5. 如何导出数据到Excel表格

    开发工具与关键技术:Visual Studio.MVC 作者:幻奏 撰写时间:2019.5.5 我们在日常的生活中常常会看到很多的数据,有时,我们不一定只是在项目里面看到数据,可能我们还要在其他的地方 ...

  6. php 输入表格数据,怎样将导出数据输入Excel 表格-php 怎么把数据导出到excel表格...

    如何将word文档中的数据导入到excel表格中 方法如下: 1.首先,打开媒介工具"记事本",将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中 ...

  7. 如何在 Vue 中导出数据至 Excel 表格 - 卡拉云

    本文首发:<如何在 Vue 中导出数据至 Excel 表格 - 卡拉云> 我们经常需要在 Vue 搭建的后台管理系统里导出数据到 Excel / CSV ,方便我们将数据共享给其他同学或在 ...

  8. 如何将物流信息导出保存在EXCEL表格里面,物流查询

    很朋友在问如何查询物流信息并将查询到的物流信息导出表格保存,有需要的朋友可以看下这篇文章,小编将分享物流的查询方法,物流批量查询,查询完成后将物流信息导出保存在EXCEL表格里面,一起来看看吧! 第一 ...

  9. 从浏览器里面的数据导出数据到Excel表格

    从浏览器里面的数据导出数据到Excel表格 开发工具与关键技术:Visual Studio 2015 作者:李仁海 撰写时间:2019.5.5 一. 导出数据到Excel表格 1. public.加上 ...

  10. java使用jxl生成excel表格,jsp使用js下载excel文件xls

    java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...

最新文章

  1. 基于 Kotlin 一行代码实现 android 导航栏 BottomBar
  2. linux重装hal服务安装,linux ubuntu 安装微信客户端
  3. java session使用_Java互联网架构-高负载集群架构如何解决session一致性问题
  4. c mysql清理日志文件_MySQL 一般查询日志或者慢查询日志历史数据的清理
  5. Android开发人员不得不收集的代码(持续更新中)
  6. 闭包与setTimeout
  7. 寻迹pid算法 c语言,基于STC12C5A60S2单片机及PID控制算法的气味循迹车设计
  8. 计算机网络路由器作用是什么,路由器的作用是什么? 猫和路由器的区别分析【图文】...
  9. STM32(RFID)阶段三(触屏数字键盘)
  10. rust腐蚀帧数_腐蚀游戏怎么提高帧数 Rust设置隐藏画质提高FPS教程
  11. macbook+外接,导致很卡
  12. 小武学fpgastep3
  13. 内存分析工具LeakCanary是如何工作的
  14. 【OpenCV 例程 300篇】219. 添加数字水印(盲水印)
  15. Action Recognition(行为识别)
  16. Java如何使用直接内存?
  17. 深度报告:国产6大传统数据库
  18. 学编程很枯燥_技术文档不必很枯燥
  19. 01.计算机基础与Java
  20. Type-challenges类型体操 1097-IsUnion 题解

热门文章

  1. python如何给一组数据打标签_用 python 给数据打标签,500 万条数据怎样提高效率?...
  2. 怎么在国外杂志上投稿
  3. 淘宝/天猫,各大平台API操作(api接口)
  4. seiko手表价格查询,原来高低不等
  5. 小米手机如何保存系统壁纸
  6. ps 修改图片大小(分辨率)(png图片)
  7. 电脑开机很慢的原因(实测X解决环境:WIN7)
  8. notifyDataSetChanged()方法怎么使用安卓
  9. (九)play之yabe项目【发表博文】
  10. 听说你斗图总是输,我从GitHub连夜扒拉出来这个神仙项目送给你