java用POI导出Excel
架构SSM + Maven
一、添加依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
二、controller层导出:
(1)HSSFWorkbook工具类(导出.xls格式文件)
HSSFWorkbook对象,最多支持65535行,适用一般数据量少导出
@RequestMapping(value = "/exportExcel")
public void exportallCusTNList(HttpServletRequest request,HttpServletResponse response) {
String clSchWorkID = request.getParameter("clSchWorkID");
// 创建excel
Workbook wb = new HSSFWorkbook();
try {
List<Cllog> cllogList = cllogService.getCusTNListBySchWorkId(clSchWorkID); // 创建一张工作表
HSSFSheet sheet = wb.createSheet("sheet1");
// 设置单元格宽度
sheet.setColumnWidth(0, "列名".getBytes().length*2*256);
sheet.setColumnWidth(1, "列名".getBytes().length*2*256);
// 创建第一行
HSSFRow row = sheet.createRow(0);
// 创建第一行的列并向单元格写值
HSSFCell cell = row.createCell(0);
cell.setCellValue("序列号");
cell = row.createCell(1);
cell.setCellValue("手机型号"); // 写入数据
for (short i=0;i<cllogList.size();i++)
{
row = sheet.createRow(i+1);
row.createCell(0).setCellValue(String.valueOf(i+1));
row.createCell(1).setCellValue(cllogList.get(i).getClCustn());
}
// 文件名
String fileName = "序列号" + clSchWorkID + "手机清单.xls";
// 解决文件乱码
final String userAgent = request.getHeader("user-agent");
if (userAgent != null && userAgent.indexOf("Firefox") >= 0) {
fileName = new String(fileName.getBytes(), "ISO8859-1");
} else {
fileName = URLEncoder.encode(fileName, "UTF8");
}
// 下载文件
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename="+fileName);
response.flushBuffer();
wb.write(response.getOutputStream()); } catch (Exception e) {
e.printStackTrace();
} finally {
if(wb != null) {
try {
wb.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
如果用HSSFWorkbook对象创建xlsx对象,用WPS可以打开,但是用office打开会出现如下错误:

(2)SXSSFWorkbook工具类(导出.xlsx格式文件,适用于数据量大的文件导出)
SXSSFWorkbook对象,只支持.xlsx格式。它就是用来解决大数据量以及超大数据量的导入导出操作的,单个sheet表就支持近104万条数据了。要是导出104万以上的数据,这时我们必须拆分到多个工作表来实现
// 只添加跟HSSFWorkBook不一样的代码
// 创建excel
Workbook wb = new SXSSFWorkbook()
// 创建一张工作表
Sheet sheet = wb.createSheet("sheet1");
// 设置单元格宽度
sheet.setColumnWidth(0, "列名".getBytes().length*2*256);
sheet.setColumnWidth(1, "列名".getBytes().length*2*256);
// 创建第一行
Row row = sheet.createRow(0);
// 创建第一行的列并向单元格写值
Cell cell = row.createCell(0);
// 文件名
String fileName = "序列号" + clSchWorkID + "手机清单.xlsx";
参考文章:https://www.cnblogs.com/Big-Boss/p/10002739.html
参考文章:https://blog.csdn.net/a602049511/article/details/52367563/
——与君共勉
java用POI导出Excel的更多相关文章
- Java之POI导出Excel(一):单sheet
相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码 <!-- ...
- java解决poi导出excel文字水印,导出excel不可操作问题
首先需求是用户提出导出excel数据需使用水印备注其用途: 其实就是在导出excel的同时带有自定义文字水印的导出. 那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出exce ...
- java使用poi导出excel
继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...
- Java使用POI导出excel(下)——实例与小技巧
[更新]:thinkgem的导出工具类: /** * Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesit ...
- java springmvc poi 导出Excel,先简单记录,后期会详细描写
POI jar包下载 : http://poi.apache.org/download.html jsp代码 <%@ page language="java" content ...
- Java之POI导出Excel(二):多个sheet
相信在大部分的web项目中都会有导出导入Excel的需求,之前我也写过一篇导出单个sheet工作表的文章,没看过的小伙伴可以去看哈,链接也给大家放出来了:导出单个sheet 但是在我们日常的工作中,需 ...
- Java使用POI导出excel(上)——基本操作
相关的介绍参考自:http://zc985552943.iteye.com/blog/1491546 一.概述 1.概念 受上文博文博主的启发,有必要先对excel的各个概念先做了解! //上述基本都 ...
- Java之Poi导出Excel文档
一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...
- java 使用poi导出Excel,设置单元格保护不可编辑
//sheet表加密:等效excel的审阅菜单下的保护工作表 sheet.protectSheet(new String("333"));//333是密码 更多设置请参考:http ...
随机推荐
- zabbix(4)数据库表分区优化
一.zabbix 数据库存储 zabbix-server将采集到的数据存储在数据库(mysql.oracle等),而数据存储的大小与每秒处理的数量量有关,因此数据存储取决于以下两个因数: (1)Req ...
- 怎么看部分元素的js代码?
- 爬虫前提——正则表达式语法以及在Python中的使用
正则表达式是用来处理字符串的强大工具,他并不是某种编程云. 正则表达式拥有独立的承受力引擎,不管什么编程语言,正则表达式的语法都是一样的. 正则表达式的匹配过程 1.一次拿出表达式和文本中的字符比较. ...
- Struts框架----进度1
一.Struts的理解 1.struts是一个按MVC模式设计的web层框架,其实它就是一个大的Servlet:ActionServlet,或者是ActionServlet的子类.在web.xml文件 ...
- [转]解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).
Git fetch和git pull的区别: 都可以从远程获取最新版本到本地 1.Git fetch:只是从远程获取最新版本到本地,不会merge(合并) $:git fetch origin mas ...
- Vue学习手记02 - 路由
1.项目 注意:项目在初始化的时候没有安装vue-router就需要进行安装 2.安装路由: 在项目中使用ctrl+`, 打开终端, 执行如下命令 npm i vue-router -S 或者 cn ...
- oracle利用触发器实现将ddl操作存入数据表中
先创建DDL数据库事件操作表: create table ddl_event( sys_time date primary key, event_name ), ), obj_type ), obj_ ...
- dom 加载监听事件 及解析
document.addEventListener("DOMContentLoaded", function (_event) { console.log("初始DOM ...
- android: ListView设置emptyView 误区
使用ListVIew 来设置EmptyView的时候须注意: ListView listview = (ListView) findViewById(R.id.list); View emptyVie ...
- osg HUD 前景色
#ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include<iostream> #include <osgV ...