forked from fanruan/easyexcel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
2.6 KiB
122 lines
2.6 KiB
package com.alibaba.excel; |
|
|
|
import java.util.Arrays; |
|
import java.util.List; |
|
|
|
import com.alibaba.excel.analysis.ExcelAnalyser; |
|
import com.alibaba.excel.analysis.ExcelAnalyserImpl; |
|
import com.alibaba.excel.analysis.ExcelReadExecutor; |
|
import com.alibaba.excel.context.AnalysisContext; |
|
import com.alibaba.excel.read.metadata.ReadSheet; |
|
import com.alibaba.excel.read.metadata.ReadWorkbook; |
|
|
|
import org.slf4j.Logger; |
|
import org.slf4j.LoggerFactory; |
|
|
|
/** |
|
* Excel readers are all read in event mode. |
|
* |
|
* @author jipengfei |
|
*/ |
|
public class ExcelReader { |
|
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelReader.class); |
|
|
|
/** |
|
* Analyser |
|
*/ |
|
private ExcelAnalyser excelAnalyser; |
|
|
|
public ExcelReader(ReadWorkbook readWorkbook) { |
|
excelAnalyser = new ExcelAnalyserImpl(readWorkbook); |
|
} |
|
|
|
/** |
|
* Parse all sheet content by default |
|
* |
|
* @deprecated lease use {@link #readAll()} |
|
*/ |
|
@Deprecated |
|
public void read() { |
|
readAll(); |
|
} |
|
|
|
/*** |
|
* Parse all sheet content by default |
|
*/ |
|
public void readAll() { |
|
excelAnalyser.analysis(null, Boolean.TRUE); |
|
} |
|
|
|
/** |
|
* Parse the specified sheet,SheetNo start from 0 |
|
* |
|
* @param readSheet |
|
* Read sheet |
|
*/ |
|
public ExcelReader read(ReadSheet... readSheet) { |
|
return read(Arrays.asList(readSheet)); |
|
} |
|
|
|
/** |
|
* Read multiple sheets. |
|
* |
|
* @param readSheetList |
|
* @return |
|
*/ |
|
public ExcelReader read(List<ReadSheet> readSheetList) { |
|
excelAnalyser.analysis(readSheetList, Boolean.FALSE); |
|
return this; |
|
} |
|
|
|
|
|
/** |
|
* Context for the entire execution process |
|
* |
|
* @return |
|
*/ |
|
public AnalysisContext analysisContext() { |
|
return excelAnalyser.analysisContext(); |
|
} |
|
|
|
/** |
|
* Current executor |
|
* |
|
* @return |
|
*/ |
|
public ExcelReadExecutor excelExecutor() { |
|
return excelAnalyser.excelExecutor(); |
|
} |
|
|
|
/** |
|
* |
|
* @return |
|
* @deprecated please use {@link #analysisContext()} |
|
*/ |
|
@Deprecated |
|
public AnalysisContext getAnalysisContext() { |
|
return analysisContext(); |
|
} |
|
|
|
/** |
|
* Complete the entire read file.Release the cache and close stream. |
|
*/ |
|
public void finish() { |
|
if (excelAnalyser != null) { |
|
excelAnalyser.finish(); |
|
} |
|
} |
|
|
|
/** |
|
* Prevents calls to {@link #finish} from freeing the cache |
|
* |
|
*/ |
|
@Override |
|
protected void finalize() { |
|
try { |
|
finish(); |
|
} catch (Throwable e) { |
|
LOGGER.warn("Destroy object failed", e); |
|
} |
|
} |
|
|
|
}
|
|
|