alibaba/easyexcel

Hyperlink未释放导致内存溢出?

Open

#3800 aperta il 21 mag 2024

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)Java (7599 fork)batch import
help wanted

Metriche repository

Star
 (33.728 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

异常代码

    static class ExcelHyperlinkHandler implements CellWriteHandler {

        private CellStyle rowLinkStyle;

//        private Hyperlink hyperlink;

        @Override
        public void afterCellDispose(CellWriteHandlerContext context) {
            Cell cell = context.getCell();
            // 这里可以对cell进行任何操作
            int rowIndex = cell.getRowIndex();
            int columnIndex = cell.getColumnIndex();
            String stringCellValue = cell.getStringCellValue();
            log.info("第{}行,第{}列写入完成。", rowIndex, columnIndex);
            Map<String, String> workOrderLinkMap = WorkOrderLinkHolder.get();
            // 第一列添加超链接(排除第一行表头)
            Workbook workbook = context.getWriteWorkbookHolder().getWorkbook();
            if (columnIndex == 0 && rowIndex != 0) {
                CreationHelper createHelper = context.getWriteSheetHolder().getSheet().getWorkbook().getCreationHelper();
                // 单元格下划线和字体蓝色
                if (rowLinkStyle == null) {
                    rowLinkStyle = workbook.createCellStyle();
                    rowLinkStyle.setWrapText(true);
                    XSSFFont linkFont = (XSSFFont) workbook.createFont();
                    linkFont.setColor((short) 12);
                    linkFont.setUnderline(Font.U_SINGLE);
                    rowLinkStyle.setFont(linkFont);
                }
                // 设置单元格为超链接样式
                Hyperlink hyperlink = createHelper.createHyperlink(HyperlinkType.URL);
                String url = workOrderLinkMap.get(stringCellValue);
                hyperlink.setAddress(url);
                cell.setHyperlink(hyperlink);
                cell.setCellStyle(rowLinkStyle);
            }
        }

    }

问题描述

分批导出20万行数据,每页500,Hyperlink对象创建了20万个,不应该每页500条写入完后释放吗?

Guida contributor