DummyRecordHandler.java 1.9 KB
Newer Older
庄家钜's avatar
庄家钜 已提交
1 2 3 4 5 6 7 8 9
package com.alibaba.excel.analysis.v03.handlers;

import java.util.LinkedHashMap;

import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
import org.apache.poi.hssf.record.Record;

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

/**
 * Record handler
 *
 * @author Dan Zheng
 */
22
public class DummyRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
庄家钜's avatar
庄家钜 已提交
23 24
    @Override
    public void processRecord(XlsReadContext xlsReadContext, Record record) {
庄家钜's avatar
庄家钜 已提交
25
        XlsReadSheetHolder xlsReadSheetHolder = xlsReadContext.xlsReadSheetHolder();
庄家钜's avatar
庄家钜 已提交
26 27 28
        if (record instanceof LastCellOfRowDummyRecord) {
            // End of this row
            LastCellOfRowDummyRecord lcrdr = (LastCellOfRowDummyRecord)record;
庄家钜's avatar
庄家钜 已提交
29 30
            xlsReadSheetHolder.setRowIndex(lcrdr.getRow());
            xlsReadContext.readRowHolder(new ReadRowHolder(lcrdr.getRow(), xlsReadSheetHolder.getTempRowType(),
31
                xlsReadContext.readSheetHolder().getGlobalConfiguration(), xlsReadSheetHolder.getCellMap()));
庄家钜's avatar
庄家钜 已提交
32
            xlsReadContext.analysisEventProcessor().endRow(xlsReadContext);
庄家钜's avatar
庄家钜 已提交
33
            xlsReadSheetHolder.setCellMap(new LinkedHashMap<Integer, Cell>());
庄家钜's avatar
庄家钜 已提交
34
            xlsReadSheetHolder.setTempRowType(RowTypeEnum.EMPTY);
庄家钜's avatar
庄家钜 已提交
35 36
        } else if (record instanceof MissingCellDummyRecord) {
            MissingCellDummyRecord mcdr = (MissingCellDummyRecord)record;
庄家钜's avatar
庄家钜 已提交
37 38
            xlsReadSheetHolder.getCellMap().put(mcdr.getColumn(),
                CellData.newEmptyInstance(mcdr.getRow(), mcdr.getColumn()));
庄家钜's avatar
庄家钜 已提交
39 40 41
        }
    }
}