EasyExcel导出xlsx格式,office打开报错,WPS正常
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打开也没有提示信息了。