-- jar包 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency> -- 工具方法 /** * * @param fileName 存入文件夹地址 * @param exportData 导出数据 * @param dataVo 导出对象 * @param sheetName sheet名字 * @return * @throws IOException */ public static File exportAliOss(String fileName, List<?> exportData, Class<?> dataVo, String sheetName) throws IOException { if (exportData.isEmpty()) { log.info("导出数据集合为空" + sheetName + "exportData={}", exportData); return null; } //创建导出文件夹 File file = new File(fileName); if (!file.exists()) { file.mkdirs(); } FileOutputStream fileOut = null; try { //将Excel文件写入文件夹下 long time = System.currentTimeMillis(); fileOut = new FileOutputStream(fileName + "/" + time + sheetName + ".xlsx"); ExcelWriter excelWriter = EasyExcel.write(fileOut).build(); //分割数据,50万存放一个sheet List<? extends List<?>> partition = Lists.partition(exportData, 500000); //开始分批查询分次写入 for (int i = 0; i < partition.size(); i++) { //创建Sheet WriteSheet sheet = new WriteSheet(); sheet.setSheetName("Sheet" + i); sheet.setSheetNo(i); List<?> list = partition.get(i); WriteSheet writeSheet = EasyExcel.writerSheet(i, sheetName + (i + 1)).head(dataVo) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); //写数据 excelWriter.write(list, writeSheet); } excelWriter.finish(); File fileUrl = new File(fileName + "/" + time + sheetName + ".xlsx"); return fileUrl; } catch (Exception exception) { log.error("导出写入数据异常 msg={}", exception.getMessage()); } finally { fileOut.close(); } return null; }
分批导出到本地文件夹
最新推荐文章于 2025-04-30 14:46:53 发布