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

庄家钜's avatar
庄家钜 已提交
3 4
import java.util.Map;

庄家钜's avatar
庄家钜 已提交
5 6 7 8 9
import org.apache.poi.hssf.record.LabelSSTRecord;
import org.apache.poi.hssf.record.Record;

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

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

    @Override
    public void processRecord(XlsReadContext xlsReadContext, Record record) {
        LabelSSTRecord lsrec = (LabelSSTRecord)record;
        ReadCache readCache = xlsReadContext.readWorkbookHolder().getReadCache();
庄家钜's avatar
庄家钜 已提交
26
        Map<Integer, Cell> cellMap = xlsReadContext.xlsReadSheetHolder().getCellMap();
庄家钜's avatar
庄家钜 已提交
27
        if (readCache == null) {
庄家钜's avatar
庄家钜 已提交
28
            cellMap.put((int)lsrec.getColumn(), CellData.newEmptyInstance(lsrec.getRow(), (int)lsrec.getColumn()));
庄家钜's avatar
庄家钜 已提交
29 30 31 32
            return;
        }
        String data = readCache.get(lsrec.getSSTIndex());
        if (data == null) {
庄家钜's avatar
庄家钜 已提交
33
            cellMap.put((int)lsrec.getColumn(), CellData.newEmptyInstance(lsrec.getRow(), (int)lsrec.getColumn()));
庄家钜's avatar
庄家钜 已提交
34 35
            return;
        }
庄家钜's avatar
庄家钜 已提交
36 37 38 39 40
        if (xlsReadContext.currentReadHolder().globalConfiguration().getAutoTrim()) {
            data = data.trim();
        }
        cellMap.put((int)lsrec.getColumn(), CellData.newInstance(data, lsrec.getRow(), (int)lsrec.getColumn()));
        xlsReadContext.xlsReadSheetHolder().setTempRowType(RowTypeEnum.DATA);
庄家钜's avatar
庄家钜 已提交
41 42
    }
}