在Springboot以及其他的一些項目中,或許我們可能需要將數據查詢出來進行生成Excel文件進行數據的展示,或者用于進行郵箱發送進行附件添加
依賴引入
此處demo使用maven依賴進行使用
<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>
依賴說明
poi-ooxml
:這個依賴主要用于處理?.xlsx
?格式的 Excel 文件(Excel 2007 及以上版本)。它依賴于?poi
?和?ooxml-schemas
?等其他庫,提供了對 Office Open XML 格式文件的支持。poi
:這是 Apache POI 的核心庫,提供了基本的 Excel 操作功能,包括創建工作簿、工作表、行和單元格等。
?代碼實例
此處我們需要將用戶的信息使用lis進行傳輸,通過遍歷這個list集合進行向我們事先生成的excel文件中進行添加數據
public class ExcelGeneratorUtil {public static void generateExcel(List<Pitch> pitches) {try {//創建一個新的 Excel 工作簿對象,XSSFWorkbook 用于處理 .xlsx 格式的 Excel 文件Workbook workbook = new XSSFWorkbook();//創建一個文件輸出流,用于將工作簿中的數據寫入到名為 recommendedColleges.xlsx文件中FileOutputStream fileOut = new FileOutputStream("recommendedColleges.xlsx");//在工作簿中創建一個名為 Recommended Colleges 的工作表Sheet sheet = workbook.createSheet("Recommended Colleges");// 創建表頭 選擇第0行進行作為表頭 并進行設置表頭信息Row headerRow = sheet.createRow(0);Cell headerCell1 = headerRow.createCell(0);headerCell1.setCellValue("學校編號");Cell headerCell2 = headerRow.createCell(1);headerCell2.setCellValue("學校名稱");Cell headerCell3 = headerRow.createCell(2);headerCell3.setCellValue("專業編號");Cell headerCell4 = headerRow.createCell(3);headerCell4.setCellValue("專業名稱");Cell headerCell5 = headerRow.createCell(4);headerCell5.setCellValue("專業最低分");Cell headerCell6 = headerRow.createCell(5);headerCell6.setCellValue("專業最低位次");// 填充數據 初始化行號為 1int rowNum = 1;for (Pitch p : pitches) {//在工作表中創建新的行,并將行號加 1Row 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());}//置每列的寬度,參數 1 是列索引,參數 2 是列寬,單位是 1/256 個字符寬度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);//將工作簿中的數據寫入到文件輸出流中,即保存到文件中workbook.write(fileOut);} catch (Exception e) {e.printStackTrace();}}
}
最終實現了excel文件的創建和使用