springboot導(dǎo)出excel多個(gè)sheet導(dǎo)出的實(shí)現(xiàn)
springboot導(dǎo)出excel多個(gè)sheet導(dǎo)出
1.pom.xml
<!--文件導(dǎo)出-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>2、controller
@GetMapping("/export")
public void export(HttpServletResponse response) {
//創(chuàng)建模擬數(shù)據(jù)
List<User> dataList = new ArrayList<>();
for (int i = 1; i <= 20; i++) {
User user = new User(i,"張三" + i, 23, "男", 173);
dataList.add(user);
}
//導(dǎo)出
ExcelExportUtil.exportExcel(response, dataList,"用戶信息.xls",9L);
}3、導(dǎo)出excel工具類
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
public class ExcelExportUtil {
/**
* 導(dǎo)出excel 多個(gè)sheet
* @param response 響應(yīng)流
* @param dataList 導(dǎo)出數(shù)據(jù)
* @param fileName 文件名
* @param sheetSize 每個(gè)sheet容量
*/
public static void exportExcel(HttpServletResponse response, List<User> dataList, String fileName, Long sheetSize) {
//創(chuàng)建HSSFWorkbook對(duì)象(excel的文檔對(duì)象)
HSSFWorkbook workbook = new HSSFWorkbook();
try (ServletOutputStream out = response.getOutputStream()) {
//計(jì)算要分幾個(gè)sheet
int sheetNum = dataList.size() / sheetSize.intValue();
if (dataList.size() % sheetSize.intValue() != 0) {
sheetNum += 1;
}
//依次對(duì)每個(gè)sheet頁(yè)面進(jìn)行操作
for (int i = 0; i < sheetNum; i++) {
int num = 1;
HSSFSheet sheet = workbook.createSheet("sheet" + (i+1));
HSSFRow row = sheet.createRow(0);
//創(chuàng)建單元格并設(shè)置單元格內(nèi)容
row.createCell(0).setCellValue("學(xué)號(hào)");
row.createCell(1).setCellValue("姓名");
row.createCell(2).setCellValue("年齡");
row.createCell(3).setCellValue("性別");
row.createCell(4).setCellValue("身高");
//i * sheetSize.intValue() 記錄上次取值得位置
for (int j = i * sheetSize.intValue(); j < dataList.size(); j++) {
User user = dataList.get(j);
//每個(gè)頁(yè)面把取夠sheetSize條數(shù)據(jù)即可
if(num < sheetSize + 1){
HSSFRow row1 = sheet.createRow(num);
row1.createCell(0).setCellValue(user.getNo());
row1.createCell(1).setCellValue(user.getName());
row1.createCell(2).setCellValue(user.getAge());
row1.createCell(3).setCellValue(user.getSex());
row1.createCell(4).setCellValue(user.getHeight());
}else{break;}
num++;
}
}
response.setContentType("application/msexcel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
workbook.write(out);
} catch (IOException e) {
e.printStackTrace();
}
}
}4、測(cè)試結(jié)果


總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中Arraylist動(dòng)態(tài)擴(kuò)容方法詳解
ArrayList的列表對(duì)象實(shí)質(zhì)上是存儲(chǔ)在一個(gè)引用型數(shù)組里的,下面這篇文章主要給大家介紹了關(guān)于Java中Arraylist動(dòng)態(tài)擴(kuò)容方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
Java實(shí)現(xiàn)SHA-256加密算法的完全解析
SHA-256是一種散列(哈希)算法,用于將任意長(zhǎng)度的數(shù)據(jù)映射為固定長(zhǎng)度的散列值,以保證數(shù)據(jù)完整性。本文將為大家介紹一下SHA-256加密算法的原理與實(shí)現(xiàn),希望對(duì)大家有所幫助2023-02-02
java 實(shí)例化類詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了java 實(shí)例化類詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-03-03
Spring Boot整合Spring Data JPA過(guò)程解析
這篇文章主要介紹了Spring Boot整合Spring Data JPA過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Java中使用HttpPost發(fā)送form格式的請(qǐng)求實(shí)現(xiàn)代碼
在Java中使用HttpPost發(fā)送form格式的請(qǐng)求,可以使用Apache HttpClient庫(kù)來(lái)實(shí)現(xiàn),這篇文章主要介紹了Java中使用HttpPost發(fā)送form格式的請(qǐng)求,本文給大家展示示例代碼,需要的朋友可以參考下2023-08-08
Java8加java10等于Java18的版本查看及特性詳解
這篇文章主要為大家介紹了Java?8加java10等于Java18的各個(gè)版本要點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Spring Boot整合ElasticSearch實(shí)現(xiàn)多版本兼容的方法詳解
簡(jiǎn)單說(shuō),ElasticSearch(簡(jiǎn)稱 ES)是搜索引擎,是結(jié)構(gòu)化數(shù)據(jù)的分布式搜索引擎。下面這篇文章主要給大家介紹了關(guān)于Spring Boot整合ElasticSearch實(shí)現(xiàn)多版本兼容的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧2018-05-05
java獲取百度網(wǎng)盤(pán)真實(shí)下載鏈接的方法
這篇文章主要介紹了java獲取百度網(wǎng)盤(pán)真實(shí)下載鏈接的方法,涉及java針對(duì)URL操作及頁(yè)面分析的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07

