EasyExcel 筛选和冻结固定表头

2020-05-19  本文已影响0人  林万程

添加一个类

import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;

public class FreezeAndFilter implements SheetWriteHandler {

    public int colSplit = 0, rowSplit = 1, leftmostColumn = 0, topRow = 1;
    public String autoFilterRange = "1:1";

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

    }

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        Sheet sheet = writeSheetHolder.getSheet();
        sheet.createFreezePane(colSplit, rowSplit, leftmostColumn, topRow);
        sheet.setAutoFilter(CellRangeAddress.valueOf(autoFilterRange));
    }
}

使用方法

        ExcelWriter writer = EasyExcel.write(outputStream).build();
        WriteSheet totalSheet = EasyExcel
                .writerSheet(1, "总分")
                .head(DownloadData.class)
                .registerWriteHandler(new FreezeAndFilter())
                .build();
        writer.write(Collections.singletonList(totalsData), totalSheet);
        writer.finish();

我的原回答:
https://github.com/alibaba/easyexcel/issues/874

上一篇 下一篇

猜你喜欢

热点阅读