AnalysisContextImpl.java 4.1 KB
Newer Older
1
package com.alibaba.excel.context;
J
update  
jipengfei.jpf 已提交
2

Z
zhuangjiaju 已提交
3 4
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
clevertension's avatar
clevertension 已提交
5

6 7 8 9 10 11 12 13 14
import com.alibaba.excel.analysis.ExcelExecutor;
import com.alibaba.excel.exception.ExcelAnalysisException;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.read.metadata.ReadWorkbook;
import com.alibaba.excel.read.metadata.holder.ReadHolder;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.read.metadata.holder.ReadSheetHolder;
import com.alibaba.excel.read.metadata.holder.ReadWorkbookHolder;
import com.alibaba.excel.util.StringUtils;
J
update  
jipengfei.jpf 已提交
15 16 17 18 19 20

/**
 *
 * @author jipengfei
 */
public class AnalysisContextImpl implements AnalysisContext {
Z
zhuangjiaju 已提交
21 22 23 24
    private static final Logger LOGGER = LoggerFactory.getLogger(AnalysisContextImpl.class);
    /**
     * The Workbook currently written
     */
25
    private ReadWorkbookHolder readWorkbookHolder;
Z
zhuangjiaju 已提交
26 27 28
    /**
     * Current sheet holder
     */
29 30 31 32 33 34 35 36 37
    private ReadSheetHolder readSheetHolder;
    /**
     * Current row holder
     */
    private ReadRowHolder readRowHolder;
    /**
     * Configuration of currently operated cell
     */
    private ReadHolder currentReadHolder;
Z
zhuangjiaju 已提交
38

39 40
    public AnalysisContextImpl(ReadWorkbook readWorkbook) {
        if (readWorkbook == null) {
Z
zhuangjiaju 已提交
41 42
            throw new IllegalArgumentException("Workbook argument cannot be null");
        }
43 44
        readWorkbookHolder = new ReadWorkbookHolder(readWorkbook);
        currentReadHolder = readWorkbookHolder;
Z
zhuangjiaju 已提交
45 46
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("Initialization 'AnalysisContextImpl' complete");
J
update  
jipengfei.jpf 已提交
47 48
        }
    }
clevertension's avatar
clevertension 已提交
49 50

    @Override
51 52
    public void currentSheet(ExcelExecutor excelExecutor, ReadSheet readSheet) {
        if (readSheet == null) {
Z
zhuangjiaju 已提交
53 54
            throw new IllegalArgumentException("Sheet argument cannot be null");
        }
55 56 57
        readSheetHolder = new ReadSheetHolder(readSheet, readWorkbookHolder);
        currentReadHolder = readSheetHolder;
        selectSheet(excelExecutor);
Z
zhuangjiaju 已提交
58
        if (LOGGER.isDebugEnabled()) {
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
            LOGGER.debug("Began to read:{}", readSheet);
        }
    }

    private void selectSheet(ExcelExecutor excelExecutor) {
        if (readSheetHolder.getSheetNo() != null && readSheetHolder.getSheetNo() >= 0) {
            for (ReadSheet readSheetExcel : excelExecutor.sheetList()) {
                if (readSheetExcel.getSheetNo().equals(readSheetHolder.getSheetNo())) {
                    readSheetHolder.setSheetName(readSheetExcel.getSheetName());
                    return;
                }
            }
            throw new ExcelAnalysisException("Can not find sheet:" + readSheetHolder.getSheetNo());
        }
        if (!StringUtils.isEmpty(readSheetHolder.getSheetName())) {
            for (ReadSheet readSheetExcel : excelExecutor.sheetList()) {
                String sheetName = readSheetExcel.getSheetName();
                if (sheetName == null) {
                    continue;
                }
                if (readSheetHolder.globalConfiguration().getAutoTrim()) {
                    sheetName = sheetName.trim();
                }
                if (sheetName.equals(readSheetHolder.getSheetName())) {
                    readSheetHolder.setSheetNo(readSheetHolder.getSheetNo());
                    return;
                }
            }
Z
zhuangjiaju 已提交
87
        }
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
        ReadSheet readSheetExcel = excelExecutor.sheetList().get(0);
        readSheetHolder.setSheetNo(readSheetExcel.getSheetNo());
        readSheetHolder.setSheetName(readSheetExcel.getSheetName());
    }

    @Override
    public ReadWorkbookHolder readWorkbookHolder() {
        return readWorkbookHolder;
    }

    @Override
    public ReadSheetHolder readSheetHolder() {
        return readSheetHolder;
    }

    @Override
    public ReadRowHolder readRowHolder() {
        return readRowHolder;
    }

    @Override
    public void readRowHolder(ReadRowHolder readRowHolder) {
        this.readRowHolder = readRowHolder;
    }

    @Override
    public ReadHolder currentReadHolder() {
        return readSheetHolder;
    }

    @Override
    public Object getCustom() {
        return readWorkbookHolder.getCustomObject();
clevertension's avatar
clevertension 已提交
121
    }
J
update  
jipengfei.jpf 已提交
122
}