ProcessResultCellHandler.java 1.7 KB
Newer Older
clevertension's avatar
clevertension 已提交
1 2 3
package com.alibaba.excel.analysis.v07.handlers;

import static com.alibaba.excel.constant.ExcelXmlConstants.ROW_TAG;
Z
zhuangjiaju 已提交
4 5 6

import org.xml.sax.Attributes;

clevertension's avatar
clevertension 已提交
7 8
import com.alibaba.excel.analysis.v07.XlsxCellHandler;
import com.alibaba.excel.analysis.v07.XlsxRowResultHolder;
庄家钜's avatar
庄家钜 已提交
9
import com.alibaba.excel.constant.ExcelXmlConstants;
Z
zhuangjiaju 已提交
10
import com.alibaba.excel.context.AnalysisContext;
Z
zhuangjiaju 已提交
11
import com.alibaba.excel.read.listener.event.EachRowAnalysisFinishEvent;
庄家钜's avatar
庄家钜 已提交
12
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
庄家钜's avatar
庄家钜 已提交
13
import com.alibaba.excel.util.PositionUtils;
clevertension's avatar
clevertension 已提交
14

15 16 17 18 19
/**
 * Cell Handler
 *
 * @author jipengfei
 */
clevertension's avatar
clevertension 已提交
20
public class ProcessResultCellHandler implements XlsxCellHandler {
Z
zhuangjiaju 已提交
21
    private AnalysisContext analysisContext;
clevertension's avatar
clevertension 已提交
22
    private XlsxRowResultHolder rowResultHandler;
23
    private int currentRow = -1;
clevertension's avatar
clevertension 已提交
24

Z
zhuangjiaju 已提交
25 26
    public ProcessResultCellHandler(AnalysisContext analysisContext, XlsxRowResultHolder rowResultHandler) {
        this.analysisContext = analysisContext;
clevertension's avatar
clevertension 已提交
27 28 29 30 31 32 33 34 35
        this.rowResultHandler = rowResultHandler;
    }

    @Override
    public boolean support(String name) {
        return ROW_TAG.equals(name);
    }

    @Override
庄家钜's avatar
庄家钜 已提交
36
    public void startHandle(String name, Attributes attributes) {
37
        currentRow = PositionUtils.getRowByRowTagt(attributes.getValue(ExcelXmlConstants.POSITION),currentRow);
庄家钜's avatar
庄家钜 已提交
38
        analysisContext.readRowHolder(
39
            new ReadRowHolder(currentRow, analysisContext.readSheetHolder().getGlobalConfiguration()));
庄家钜's avatar
庄家钜 已提交
40
    }
clevertension's avatar
clevertension 已提交
41 42 43

    @Override
    public void endHandle(String name) {
Z
zhuangjiaju 已提交
44 45
        analysisContext.readSheetHolder()
            .notifyEndOneRow(new EachRowAnalysisFinishEvent(rowResultHandler.getCurRowContent()), analysisContext);
clevertension's avatar
clevertension 已提交
46 47 48 49
        rowResultHandler.clearResult();
    }

}