EasyExcel使用注解方式導出數據(定義標題樣式和列寬)


列寬設置

如果要好看,只能每個屬性字段都不手動設置,這個太麻煩了

直接類上標記列寬注解,這種方式比較簡單

@ExcelIgnoreUnannotated
@ColumnWidth(20)
public class ContractExpenditureApplyOffsetTypeExportDto{}

效果

 

 

 

 

表頭標題字體大小是否自動換行設置

參考下面的導出工具類

/**
 * easyexcel注解導出工具類
 * @author zwh
 * @date 2021/3/4 16:44
 **/
public class EasyExcelWriteExportUtils {

    /**
     * 注解導出工具類
     * @param exportList
     * @param outFileName
     * @param response
     * @param isCloseExcel
     * @return
     */
    public static ExcelWriter exportToResponse(List exportList, String outFileName,
                                                  String sheetName,
                                                  Class clazz,
                                                  HttpServletResponse response,
                                                  boolean isCloseExcel) {
        ExcelWriter excelWriter = null;
        try {
            // 頭的策略
            WriteCellStyle headWriteCellStyle = EasyExcelWriteExportUtils.buildHeadCellStyle();
            HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle,
                    new ArrayList<WriteCellStyle>());

            excelWriter = EasyExcelWriteExportUtils.getExcelWriter(outFileName,
                    clazz,
                    Arrays.asList(horizontalCellStyleStrategy),
                    response);

            WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build();
            excelWriter.write(exportList, writeSheet);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(isCloseExcel){
                // 別忘記關閉流
                if (excelWriter != null) {
                    excelWriter.finish();
                }
            }
        }
        if (isCloseExcel) {
            return null;
        } else {
            return excelWriter;
        }
    }

    /**
     * 根據輸出文件名獲取excelWriter類
     *
     * @param outFileName
     * @param response
     */
    public static ExcelWriter getExcelWriter(String outFileName, Class clazz, List<WriteHandler> writeHandlerList, HttpServletResponse response) throws IOException {
        ExcelWriter excelWriter = null;
        response.reset();
        response.setContentType("application/octet-stream; charset=utf-8");
        response.setHeader("Content-Disposition", "attachment; filename=" + EncodeUtils.encodeUrl(outFileName));

        OutputStream out = response.getOutputStream();
        //這里指定需要表頭,因為model通常包含表信頭息
        if (writeHandlerList != null && !writeHandlerList.isEmpty()) {
            ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(out, clazz);
            for (WriteHandler writeHandler : writeHandlerList) {
                excelWriterBuilder.registerWriteHandler(writeHandler);
            }
            excelWriter = excelWriterBuilder.build();
        } else {
            excelWriter = EasyExcelFactory.write(out, clazz).build();
        }

        return excelWriter;
    }
    /**
     * Build head cell style
     *
     * @return
     */
    public static WriteCellStyle buildHeadCellStyle() {
//        CellStyle headCellStyle = StyleUtil.buildHeadCellStyle(workbook, null);
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontName("宋體");
        headWriteFont.setFontHeightInPoints((short)12);
        headWriteFont.setBold(true);
        headWriteCellStyle.setWriteFont(headWriteFont);
        //自動換行
        headWriteCellStyle.setWrapped(false);
        return headWriteCellStyle;
    }
}

 

使用示例

EasyExcelWriteExportUtils.exportToResponse(listData, "合作費確認數據.xlsx",
                    "合作費確認數據",
                    ContractExpenditureApplyOffsetTypeExportDto.class,
                    response,
                    true);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM