java导出excel_JAVA导出EXCEL表格
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表格相关推荐
- 安卓mysql导出excel_Android开发实现的导出数据库到Excel表格功能【附源码下载】...
本文实例讲述了Android开发实现的导出数据库到Excel表格功能.分享给大家供大家参考,具体如下: 之前一直在电脑上用Excel表格记录家庭帐单,不久前重装系统不小心干掉了,伤心了好久,那可是我记 ...
- 使用EasyPoi 导出简单的Excel表格。
最近一个项目用到了到处Excel表格. 1.首先 通过Maven 添加jar包. <!--导出excel--><dependency><groupId>org.je ...
- 利用EasyExcel完整的springboot +vue前后端导出并下载excel表格
文章目录 写在前面 正文 1. springboot后端引入easyexcel及使用 1.1 引入依赖 1.2 接口serviceImpl方法 1.3 提供一个对list集合去重的方法(根据相同key ...
- 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...
如何将百度指数数据导出到Excel表格 第一步:打开CAD.CAD命令行输入"Li"."选择对象"选需要提取坐标的多段线.回车. 第二步:将CAD文本框中的数据 ...
- 如何导出数据到Excel表格
开发工具与关键技术:Visual Studio.MVC 作者:幻奏 撰写时间:2019.5.5 我们在日常的生活中常常会看到很多的数据,有时,我们不一定只是在项目里面看到数据,可能我们还要在其他的地方 ...
- php 输入表格数据,怎样将导出数据输入Excel 表格-php 怎么把数据导出到excel表格...
如何将word文档中的数据导入到excel表格中 方法如下: 1.首先,打开媒介工具"记事本",将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中 ...
- 如何在 Vue 中导出数据至 Excel 表格 - 卡拉云
本文首发:<如何在 Vue 中导出数据至 Excel 表格 - 卡拉云> 我们经常需要在 Vue 搭建的后台管理系统里导出数据到 Excel / CSV ,方便我们将数据共享给其他同学或在 ...
- 如何将物流信息导出保存在EXCEL表格里面,物流查询
很朋友在问如何查询物流信息并将查询到的物流信息导出表格保存,有需要的朋友可以看下这篇文章,小编将分享物流的查询方法,物流批量查询,查询完成后将物流信息导出保存在EXCEL表格里面,一起来看看吧! 第一 ...
- 从浏览器里面的数据导出数据到Excel表格
从浏览器里面的数据导出数据到Excel表格 开发工具与关键技术:Visual Studio 2015 作者:李仁海 撰写时间:2019.5.5 一. 导出数据到Excel表格 1. public.加上 ...
- java使用jxl生成excel表格,jsp使用js下载excel文件xls
java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...
最新文章
- 基于 Kotlin 一行代码实现 android 导航栏 BottomBar
- linux重装hal服务安装,linux ubuntu 安装微信客户端
- java session使用_Java互联网架构-高负载集群架构如何解决session一致性问题
- c mysql清理日志文件_MySQL 一般查询日志或者慢查询日志历史数据的清理
- Android开发人员不得不收集的代码(持续更新中)
- 闭包与setTimeout
- 寻迹pid算法 c语言,基于STC12C5A60S2单片机及PID控制算法的气味循迹车设计
- 计算机网络路由器作用是什么,路由器的作用是什么? 猫和路由器的区别分析【图文】...
- STM32(RFID)阶段三(触屏数字键盘)
- rust腐蚀帧数_腐蚀游戏怎么提高帧数 Rust设置隐藏画质提高FPS教程
- macbook+外接,导致很卡
- 小武学fpgastep3
- 内存分析工具LeakCanary是如何工作的
- 【OpenCV 例程 300篇】219. 添加数字水印(盲水印)
- Action Recognition(行为识别)
- Java如何使用直接内存?
- 深度报告:国产6大传统数据库
- 学编程很枯燥_技术文档不必很枯燥
- 01.计算机基础与Java
- Type-challenges类型体操 1097-IsUnion 题解
热门文章
- python如何给一组数据打标签_用 python 给数据打标签,500 万条数据怎样提高效率?...
- 怎么在国外杂志上投稿
- 淘宝/天猫,各大平台API操作(api接口)
- seiko手表价格查询,原来高低不等
- 小米手机如何保存系统壁纸
- ps 修改图片大小(分辨率)(png图片)
- 电脑开机很慢的原因(实测X解决环境:WIN7)
- notifyDataSetChanged()方法怎么使用安卓
- (九)play之yabe项目【发表博文】
- 听说你斗图总是输,我从GitHub连夜扒拉出来这个神仙项目送给你