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打开也没有提示信息了。

GitHub 加速计划 / ea / easyexcel
24
5
下载
快速、简洁、解决大文件内存溢出的java处理Excel工具
最近提交(Master分支:2 个月前 )
c42183df Bugfix 1 年前
efa7dff6 * 重新加回 `commons-io` 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐