EofRecordHandler.java 1.7 KB
Newer Older
庄家钜's avatar
庄家钜 已提交
1 2
package com.alibaba.excel.analysis.v03.handlers;

3 4 5
import java.util.LinkedHashMap;

import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
庄家钜's avatar
庄家钜 已提交
6 7 8
import org.apache.poi.hssf.record.Record;

import com.alibaba.excel.analysis.v03.IgnorableXlsRecordHandler;
庄家钜's avatar
庄家钜 已提交
9
import com.alibaba.excel.context.xls.XlsReadContext;
10 11 12 13
import com.alibaba.excel.enums.RowTypeEnum;
import com.alibaba.excel.metadata.Cell;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.read.metadata.holder.xls.XlsReadSheetHolder;
庄家钜's avatar
庄家钜 已提交
14 15 16 17 18 19

/**
 * Record handler
 *
 * @author Dan Zheng
 */
20
public class EofRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
庄家钜's avatar
庄家钜 已提交
21 22 23

    @Override
    public void processRecord(XlsReadContext xlsReadContext, Record record) {
24 25 26 27 28 29 30 31 32 33 34 35 36
        if (xlsReadContext.readSheetHolder() == null) {
            return;
        }
        // Sometimes tables lack the end record of the last column
        if (!xlsReadContext.xlsReadSheetHolder().getCellMap().isEmpty()) {
            XlsReadSheetHolder xlsReadSheetHolder = xlsReadContext.xlsReadSheetHolder();
            // Forge a termination data
            xlsReadContext.readRowHolder(new ReadRowHolder(xlsReadContext.xlsReadSheetHolder().getRowIndex() + 1,
                xlsReadSheetHolder.getTempRowType(),
                xlsReadContext.readSheetHolder().getGlobalConfiguration(), xlsReadSheetHolder.getCellMap()));
            xlsReadContext.analysisEventProcessor().endRow(xlsReadContext);
            xlsReadSheetHolder.setCellMap(new LinkedHashMap<Integer, Cell>());
            xlsReadSheetHolder.setTempRowType(RowTypeEnum.EMPTY);
庄家钜's avatar
庄家钜 已提交
37
        }
38 39

        xlsReadContext.analysisEventProcessor().endSheet(xlsReadContext);
庄家钜's avatar
庄家钜 已提交
40 41
    }
}