java使用poi导出Excel表发回浏览器或是保存到本地
在实际工作中不可避免的会遇上统计、导出报表的工作,我自己整理了一份导出Excel代码放到这里,即为了分享知识,也是对自己的总结
首先导入依赖
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency>
poi依赖是用来操作Excel的依赖包
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version></dependency>
poi-ooxml是poi的升级版
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.9</version></dependency>
poi-ooxml-schemas可以支持office2007文件, 一般的Excel操作有这三个就够用了
生成之后可以使用浏览器下载Excel的方式,也可以保存到本地,返回到浏览器要用到HttpServletResponse ,保存到本地则不用。
导出Excel代码:
//第一步,创建一个HSSFWorkbook,对应一个Excel文件HSSFWorkbook wb = new HSSFWorkbook();// 第二步,为工作簿创建一个新工作表,传入表名HSSFSheet sheet = wb.createSheet("测试");// 第三步,在sheet中添加表头第0行HSSFRow row = sheet.createRow(0);// 第四步,创建单元格样式,并设置值表头 设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 创建一个居中格式//第五步创建字体样式Font headerFont = wb.createFont();//创建一个字体headerFont.setFontName("Arial");//设置字体的名称(如Arial)headerFont.setFontHeightInPoints((short) 12);//设置字体高度headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);//设置字体加粗headerFont.setColor(HSSFColor.BLACK.index);//设置字体的颜色style.setFont(headerFont);//应用该字体//创建一个合并的单元格对象sheet.addMergedRegion(new CellRangeAddress(0,0,0,2));//创建合并的单元格范围//在行中创建新的单元格并返回HSSFCell cell = row.createCell(0);cell.setCellValue("导出表单测试");//添加标题cell.setCellStyle(style);//将样式赋值//写入execl列标题//创建标题行row = sheet.createRow(1);//标题数据String[] title = {"测试列1","测试列2","测试列3"};for(int i=0;i<title.length;i++){cell = row.createCell(i);cell.setCellValue(title[i]);cell.setCellStyle(style);sheet.setColumnWidth(i, 20 * 256);}//创建内容String[] [] values = {{"11","12","13"},{"21","22","23"},{"31","32","33"}};for(int i=0;i<values.length;i++){row = sheet.createRow(i + 2);//创建数据行for(int j=0;j<values[i].length;j++){//将内容按顺序赋给对应的列对象row.createCell(j).setCellValue(values[i][j]);}}
生成Excel完毕
下面是发送回浏览器,需要指定响应头
//发送回浏览器 try (OutputStream os = response.getOutputStream();){//从response中获取输出流String fileName = new String("测试导出Excel.xls".getBytes(), "ISO8859-1");//准备好文件名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");wb.write(os);//写出到浏览器os.close();//关闭流} catch (IOException e) {e.printStackTrace();}catch (Exception ex) {ex.printStackTrace();}
这样导出Excel到浏览器就完成了
下面是保存到本地
try {File file = new File("D://upFiles/" + "files/");if (!file.exists()) {file.mkdirs();// 创建文件根目录}String savePath = file.getPath() +"/test.xls";OutputStream os = new FileOutputStream(savePath);wb.write(os);os.flush();os.close();} catch (Exception e) {e.printStackTrace();}
java使用poi导出Excel表发回浏览器或是保存到本地相关推荐
- java中poi导出Excel表格(前台流文件接收)
java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...
- java利用poi导出excel功能-附带图片导出
java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...
- 使用poi导出excel表基础
使用poi导出excel表基础. 本人使用的是ssm的框架.使用了mybatis的逆向工程.数据的获取方法很多,如果用servlet大同小异. 在页面中设置一个按钮 为按钮添加点击事件. <bu ...
- Java操作poi导出Excel自定义字体颜色
Java操作poi导出Excel自定义字体颜色 功能介绍 POI操作Excel 第一步创建一个导出的工具类 整体定义表格字体样式 自定义表格字体样式 总结 功能介绍 Apache POI 是用Java ...
- JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls)
JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls) *** POI的结构: ---*HSSF - 提供读写Microsoft Excel格式档案的功能. ---*XSSF - ...
- Java和poi导出excel报表
一:poi jar下载地址:点击打开链接: 二:工程截图: 三:运行效果截图: 四:源代码: Student.java: package com.poi.bean;import java.util.D ...
- Java使用POi导出Excel(包含图片)
Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...
- 摘抄:java查询数据导出excel并返回给浏览器下载
maven地址为: <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml ...
- poi导出excel 损坏_急!!!java用poi导出excel文件,打开导出的文件时报错“文件错误,数据可能丢失”...
展开全部 两个原因: 1.你的excel模版本身有问题,可以尝试新建一个模版. 2.你的excel使用了一e68a8462616964757a686964616f31333365643662些POI不 ...
最新文章
- Oracle RMAN 设置和配置(一)
- 有理贝塞尔曲线(Rational Bezier Curves)
- linux网卡O I流量查询,查看linux server网络I/0流量的shell脚本
- Ehcache 整合Spring 使用页面、对象缓存
- 区块链浏览器_区块链FBI——如何用区块链浏览器追踪链上数据
- C++语言基础 —— STL —— 容器与迭代器 —— set 与 multiset
- python的json dump_python中json.dump和json.dumps的区别
- Shell脚本实现模拟并发及并发数控制
- 牛客 黑龙江大学程序设计竞赛重现 19-4-25 D
- 最热BMS可直接下载!!
- 通信总线-现场总线-CAN
- Vue-电子签名(E-Signature)
- 和平精英镜头灵敏度怎么调到最稳呢
- 记深信服2018秋季校园招聘--技术服务工程师
- # Classification: Accuracy(准确率)
- 客快物流大数据项目(六十七):客户主题
- 什么是Arduino
- 解压缩后点击解压.html,如何使用压缩、解压缩软件(WINRAR、ZIP)进行文件的压缩和解压...
- 博客大巴,自动登录,并发布信息开发小计。
- 【2017.11.15】设计师的正确工作流程
热门文章
- Postgresql 1小时快速入门
- Houdini 使用 Vscode 写 Vex 脚本
- 免费的运维服务器,服务器运维, 卓豪ManageEngine
- 2020清华大学计算机系夏令营机试
- osg编译方法(CMake_gui的使用)
- vue多个关键字高亮
- 一起赚美元⑤ | Instapainting照片转油画服务,通过SEO优化,每月赚取3.2万美元的真实案例
- 华东师范大学 数据科学与工程 829 2021考研真题
- php中实现图片自动轮播,基于vue.js实现图片轮播效果
- 怎么把两段音频合成一段-快速合并音频文件