EasyExcel 导出文件,冻结表头问题

文章讲述了在使用EasyExcel将数据导出为xlsx格式时,遇到Office打开报错但WPS正常的情况。问题出在FreezeRowColHandler的参数设置上,通过调整参数,解决了冻结表头和列的问题,确保Office也能正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EasyExcel导出xlsx格式,office打开报错,WPS正常

office报错
WPS打开是正常的,且列表表头有冻结。

目的是要冻结住表格的前四列,和前两行表头。出现错误的代码如下:
贴代码:

EasyExcel.write(path + fileName, ExportPojo.class)
                    .registerWriteHandler(new FreezeRowColHandler(4,2,0,0))
                    .sheet("信息").doWrite(list);

FreezeRowColHandler.java

public class FreezeRowColHandler implements SheetWriteHandler {
    /**
     * cellNum:表示要冻结的列数;
     * rowNum:表示要冻结的行数;
     * firstCellNum:表示被固定列右边第一列的列号;
     * firstRollNum :表示被固定行下边第一列的行号;
     */
    private int colSplit = 0, rowSplit = 1, firstCellNum = 0, firstRollNum = 1;

    public FreezeRowColHandler(int colSplit, int rowSplit, int firstCellNum, int firstRollNum) {
        this.colSplit = colSplit;
        this.rowSplit = rowSplit;
        this.firstCellNum = firstCellNum;
        this.firstRollNum = firstRollNum;
    }

    @Override
    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

    }

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        Sheet sheet = writeSheetHolder.getSheet();
        sheet.createFreezePane(colSplit, rowSplit, firstCellNum, firstRollNum);
    }
}

修改方案:

EasyExcel.write(path + fileName, ExportPojo.class)
                    .registerWriteHandler(new FreezeRowColHandler(4,2,4,2)) // 改的是这里,补全冻结参数。
                    .sheet("信息").doWrite(list);

修改之后,冻结表头就没问题了。office打开也没有提示信息了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值