Java工具类——实体类列表写入excel
public static <T> void writeListToExcel(List<T> dataList, String filePath, String sheetName)throws IOException, IllegalAccessException {if (dataList == null || dataList.isEmpty()) {return;}Workbook workbook;File file = new File(filePath);if (file.exists()) {try (FileInputStream inputStream = new FileInputStream(file)) {workbook = new XSSFWorkbook(inputStream);}} else {workbook = new XSSFWorkbook();}Sheet sheet = workbook.getSheet(sheetName);if (sheet != null) {int sheetIndex = workbook.getSheetIndex(sheet);workbook.removeSheetAt(sheetIndex);sheet = workbook.createSheet(sheetName);} else {sheet = workbook.createSheet(sheetName);}Class<?> clazz = dataList.get(0).getClass();Field[] fields = clazz.getDeclaredFields();Row headerRow = sheet.createRow(0);CellStyle headerStyle = createHeaderStyle(workbook);for (int i = 0; i < fields.length; i++) {Cell cell = headerRow.createCell(i);cell.setCellValue(fields[i].getName());cell.setCellStyle(headerStyle);}for (int i = 0; i < dataList.size(); i++) {Row row = sheet.createRow(i + 1);T item = dataList.get(i);for (int j = 0; j < fields.length; j++) {fields[j].setAccessible(true); Object value = fields[j].get(item);Cell cell = row.createCell(j);if (value != null) {if (value instanceof Number) {cell.setCellValue(((Number) value).doubleValue());} else if (value instanceof Boolean) {cell.setCellValue((Boolean) value);} else {cell.setCellValue(value.toString());}}}}for (int i = 0; i < fields.length; i++) {sheet.autoSizeColumn(i);}try (FileOutputStream outputStream = new FileOutputStream(filePath)) {workbook.write(outputStream);} finally {workbook.close();}}private static CellStyle createHeaderStyle(Workbook workbook) {CellStyle style = workbook.createCellStyle();Font font = workbook.createFont();font.setBold(true);style.setFont(font);style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());style.setFillPattern(FillPatternType.SOLID_FOREGROUND);style.setBorderBottom(BorderStyle.THIN);style.setBorderTop(BorderStyle.THIN);style.setBorderLeft(BorderStyle.THIN);style.setBorderRight(BorderStyle.THIN);return style;}