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 ...
随机推荐
- Arrays.binarySearch采坑记录及用法
今天在生产环境联调的时候,发现一个很奇怪的问题,明明测试数据正确,结果却是结果不通过,经过debug查询到原来是Arrays.binarySearch用法错误,记录一下,避免后续再次犯错 具体测试如下 ...
- 物聯網安全黑客松 IoT Security and Privacy Hackathon
感覺這次黑客松的程度屬於初階,但是節奏很快,內容緊湊.概念部分解說較多,以致實驗時間縮短,有些只能看demo有點遺憾.幸好有video-taped,事後回溯可以看看能不能replicate實驗.總體而 ...
- 面试题小议---BY gremount
Problem 1: 两个烧杯,一个放糖一个放盐,用勺子舀一勺糖到盐,搅拌均匀,然后舀一勺混合物会放糖的烧杯,问你两个烧杯哪个杂质多? 提示:相同.(1)可以用一个特殊数据计算一下,可以得到两个烧杯 ...
- Project Euler Problem (1~10)
1.If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. Th ...
- git sub module
https://github.com/ViRb3/de4dot-cex/blob/master/.gitmodules git submodule sync command - what is it ...
- Keil MDK 5代码补全功能设置
这段时间在用Keil5编程,经常会遇到在程序文件头部定义一个全局变量.在后面的编程过程中,经常会要用到这个变量,如果每次再打这个变量名会特别麻烦和浪费时间,我就想着Keil5有没有像vs软件一样的代码 ...
- python __iter__ 迭代器
1. 迭代器是什么? 迭代器是一个对象,是python非常强大的特性 根本上说, 迭代器就是有一个 next() 方法的对象, 而不是通过索引来计数. 当你或是一个循环机制(例如 for 语句)需要下 ...
- 使用oid2name列出数据库和对应的oid
[postgres@postgre base]$ ll total 172 drwx------ 2 postgres postgres 12288 Dec 6 09:21 1 drwx------ ...
- PHP使用MongoDB存储经纬度,查询距离
https://blog.csdn.net/qq_40012295/article/details/84861466 https://docs.mongodb.com/manual/reference ...
- AppCompatTextView可改变文本字体大小
有这样一个需求,要求在一个列表中的每个条目中展示字数不限个数的文本.而且每个条目的宽度都是固定的,展示的文本如果过长,不可以用省略号显示,只能动态的调整(缩小)文本的字号来达到文本能完全显示的效果,而 ...