SpringBoot生成Excel文件的實(shí)現(xiàn)示例
在Springboot以及其他的一些項(xiàng)目中,或許我們可能需要將數(shù)據(jù)查詢出來(lái)進(jìn)行生成Excel文件進(jìn)行數(shù)據(jù)的展示,或者用于進(jìn)行郵箱發(fā)送進(jìn)行附件添加
依賴引入
此處demo使用maven依賴進(jìn)行使用
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>依賴說(shuō)明
poi-ooxml:這個(gè)依賴主要用于處理.xlsx格式的 Excel 文件(Excel 2007 及以上版本)。它依賴于poi和ooxml-schemas等其他庫(kù),提供了對(duì) Office Open XML 格式文件的支持。poi:這是 Apache POI 的核心庫(kù),提供了基本的 Excel 操作功能,包括創(chuàng)建工作簿、工作表、行和單元格等。
代碼實(shí)例
此處我們需要將用戶的信息使用lis進(jìn)行傳輸,通過(guò)遍歷這個(gè)list集合進(jìn)行向我們事先生成的excel文件中進(jìn)行添加數(shù)據(jù)
public class ExcelGeneratorUtil {
public static void generateExcel(List<Pitch> pitches) {
try {
//創(chuàng)建一個(gè)新的 Excel 工作簿對(duì)象,XSSFWorkbook 用于處理 .xlsx 格式的 Excel 文件
Workbook workbook = new XSSFWorkbook();
//創(chuàng)建一個(gè)文件輸出流,用于將工作簿中的數(shù)據(jù)寫入到名為 recommendedColleges.xlsx文件中
FileOutputStream fileOut = new FileOutputStream("recommendedColleges.xlsx");
//在工作簿中創(chuàng)建一個(gè)名為 Recommended Colleges 的工作表
Sheet sheet = workbook.createSheet("Recommended Colleges");
// 創(chuàng)建表頭 選擇第0行進(jìn)行作為表頭 并進(jìn)行設(shè)置表頭信息
Row headerRow = sheet.createRow(0);
Cell headerCell1 = headerRow.createCell(0);
headerCell1.setCellValue("學(xué)校編號(hào)");
Cell headerCell2 = headerRow.createCell(1);
headerCell2.setCellValue("學(xué)校名稱");
Cell headerCell3 = headerRow.createCell(2);
headerCell3.setCellValue("專業(yè)編號(hào)");
Cell headerCell4 = headerRow.createCell(3);
headerCell4.setCellValue("專業(yè)名稱");
Cell headerCell5 = headerRow.createCell(4);
headerCell5.setCellValue("專業(yè)最低分");
Cell headerCell6 = headerRow.createCell(5);
headerCell6.setCellValue("專業(yè)最低位次");
// 填充數(shù)據(jù) 初始化行號(hào)為 1
int rowNum = 1;
for (Pitch p : pitches) {
//在工作表中創(chuàng)建新的行,并將行號(hào)加 1
Row row = sheet.createRow(rowNum++);
Cell cell1 = row.createCell(0);
cell1.setCellValue(p.getSchoolCode());
Cell cell2 = row.createCell(1);
cell2.setCellValue(p.getSchoolName());
Cell cell3 = row.createCell(2);
cell3.setCellValue(p.getpCode());
Cell cell4 = row.createCell(3);
cell4.setCellValue(p.getpName());
Cell cell5 = row.createCell(4);
cell5.setCellValue(p.getLowestScore());
Cell cell6 = row.createCell(5);
cell6.setCellValue(p.getLowestRank());
}
//置每列的寬度,參數(shù) 1 是列索引,參數(shù) 2 是列寬,單位是 1/256 個(gè)字符寬度
sheet.setColumnWidth(0, 15 * 256);
sheet.setColumnWidth(1, 50 * 256);
sheet.setColumnWidth(2, 15 * 256);
sheet.setColumnWidth(3, 20 * 256);
sheet.setColumnWidth(4, 15 * 256);
sheet.setColumnWidth(5, 15 * 256);
//將工作簿中的數(shù)據(jù)寫入到文件輸出流中,即保存到文件中
workbook.write(fileOut);
} catch (Exception e) {
e.printStackTrace();
}
}
}
最終實(shí)現(xiàn)了excel文件的創(chuàng)建和使用
到此這篇關(guān)于SpringBoot生成Excel文件的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot生成Excel文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java解決計(jì)算一個(gè)字符串長(zhǎng)度問(wèn)題的實(shí)戰(zhàn)指南
在Java編程中,處理字符串是非常常見(jiàn)的任務(wù)之一,這篇文章主要介紹了如何Java解決計(jì)算一個(gè)字符串長(zhǎng)度的問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-03-03
解決IDEA修改 .vmoptions 文件后導(dǎo)致無(wú)法啟動(dòng)的問(wèn)題
這篇文章主要介紹了解決IDEA修改 .vmoptions 文件后導(dǎo)致無(wú)法啟動(dòng)的問(wèn)題,需要的朋友可以參考下2020-12-12
關(guān)于mybatis-plus邏輯刪除自動(dòng)填充更新時(shí)間的問(wèn)題
mybatis-plus是對(duì)mybatis的增強(qiáng),mybatis-plus更像是面向?qū)ο缶幊?,?shù)據(jù)庫(kù)基本CRUD的操作可以不用手動(dòng)編寫SQL語(yǔ)句,大大提高了開(kāi)發(fā)的效率,這篇文章主要介紹了mybatis-plus邏輯刪除自動(dòng)填充更新時(shí)間問(wèn)題,需要的朋友可以參考下2022-07-07
Spring如何消除代碼中的if-else/switch-case
這篇文章主要給大家介紹了關(guān)于Spring如何消除代碼中if-else/switch-case的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
BeanUtils.copyProperties復(fù)制不生效的解決
這篇文章主要介紹了BeanUtils.copyProperties復(fù)制不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

