refactor: Refactor the code for the reading module (#214)

This commit is contained in:
psxjoy 2025-02-05 11:30:56 +08:00 committed by GitHub
parent a5b10044d5
commit 1e4807d88a
18 changed files with 44 additions and 50 deletions

View File

@ -1,9 +1,9 @@
package cn.idev.excel.read.builder;
import cn.idev.excel.metadata.AbstractParameterBuilder;
import cn.idev.excel.read.listener.ReadListener;
import cn.idev.excel.read.metadata.ReadBasicParameter;
import cn.idev.excel.util.ListUtils;
import cn.idev.excel.metadata.AbstractParameterBuilder;
/**
* Build ExcelBuilder

View File

@ -8,17 +8,17 @@ import java.util.List;
import javax.xml.parsers.SAXParserFactory;
import cn.idev.excel.ExcelReader;
import cn.idev.excel.cache.ReadCache;
import cn.idev.excel.cache.selector.ReadCacheSelector;
import cn.idev.excel.cache.selector.SimpleReadCacheSelector;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.enums.CellExtraTypeEnum;
import cn.idev.excel.enums.ReadDefaultReturnEnum;
import cn.idev.excel.event.AnalysisEventListener;
import cn.idev.excel.event.SyncReadListener;
import cn.idev.excel.read.listener.ModelBuildEventListener;
import cn.idev.excel.read.metadata.ReadWorkbook;
import cn.idev.excel.ExcelReader;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.support.ExcelTypeEnum;
/**
@ -211,7 +211,6 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder<Exce
return this;
}
public ExcelReaderBuilder numRows(Integer numRows) {
readWorkbook.setNumRows(numRows);
return this;

View File

@ -2,11 +2,11 @@ package cn.idev.excel.read.builder;
import java.util.List;
import cn.idev.excel.event.SyncReadListener;
import cn.idev.excel.read.metadata.ReadSheet;
import cn.idev.excel.ExcelReader;
import cn.idev.excel.event.SyncReadListener;
import cn.idev.excel.exception.ExcelAnalysisException;
import cn.idev.excel.exception.ExcelGenerateException;
import cn.idev.excel.read.metadata.ReadSheet;
/**
* Build sheet

View File

@ -4,16 +4,16 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.enums.CellDataTypeEnum;
import cn.idev.excel.enums.HeadKindEnum;
import cn.idev.excel.enums.ReadDefaultReturnEnum;
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.exception.ExcelDataConvertException;
import cn.idev.excel.metadata.Head;
import cn.idev.excel.metadata.data.DataFormatData;
import cn.idev.excel.metadata.data.ReadCellData;
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
import cn.idev.excel.support.cglib.beans.BeanMap;
import cn.idev.excel.util.BeanMapUtils;
import cn.idev.excel.util.ClassUtils;
@ -21,7 +21,6 @@ import cn.idev.excel.util.ConverterUtils;
import cn.idev.excel.util.DateUtils;
import cn.idev.excel.util.MapUtils;
/**
* Convert to the object the user needs
*
@ -57,7 +56,7 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener<Map<
if (readDefaultReturn == ReadDefaultReturnEnum.STRING) {
// string
map.put(key,
(String) ConverterUtils.convertToJavaObject(cellData, null, null, readSheetHolder.converterMap(),
(String)ConverterUtils.convertToJavaObject(cellData, null, null, readSheetHolder.converterMap(),
context, context.readRowHolder().getRowIndex(), key));
} else {
// return ReadCellData

View File

@ -3,9 +3,8 @@ package cn.idev.excel.read.listener;
import java.util.List;
import java.util.function.Consumer;
import cn.idev.excel.util.ListUtils;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.util.ListUtils;
import org.apache.commons.collections4.CollectionUtils;
/**

View File

@ -2,13 +2,11 @@ package cn.idev.excel.read.listener;
import java.util.Map;
import cn.idev.excel.event.Listener;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.event.Listener;
import cn.idev.excel.metadata.CellExtra;
import cn.idev.excel.metadata.data.ReadCellData;
import cn.idev.excel.read.metadata.holder.ReadRowHolder;
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
/**
* Interface to listen for read results
@ -69,10 +67,10 @@ public interface ReadListener<T> extends Listener {
*/
default boolean hasNext(AnalysisContext context) {
if (context == null
|| context.readRowHolder() == null
|| context.readSheetHolder() == null
|| context.readSheetHolder().getReadSheet() == null
|| context.readWorkbookHolder().getReadWorkbook() == null
|| context.readRowHolder() == null
|| context.readSheetHolder() == null
|| context.readSheetHolder().getReadSheet() == null
|| context.readWorkbookHolder().getReadWorkbook() == null
) {
return true;
}

View File

@ -5,7 +5,6 @@ import java.util.List;
import cn.idev.excel.metadata.BasicParameter;
import cn.idev.excel.read.listener.ReadListener;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

View File

@ -31,7 +31,7 @@ public class ReadSheet extends ReadBasicParameter {
this.sheetName = sheetName;
}
public ReadSheet(Integer sheetNo, String sheetName,Integer numRows) {
public ReadSheet(Integer sheetNo, String sheetName, Integer numRows) {
this.sheetNo = sheetNo;
this.sheetName = sheetName;
this.numRows = numRows;
@ -53,7 +53,6 @@ public class ReadSheet extends ReadBasicParameter {
this.sheetName = sheetName;
}
public Integer getNumRows() {
return numRows;
}

View File

@ -3,18 +3,17 @@ package cn.idev.excel.read.metadata.holder;
import java.util.HashMap;
import java.util.List;
import cn.idev.excel.enums.HolderEnum;
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
import cn.idev.excel.util.ListUtils;
import cn.idev.excel.converters.Converter;
import cn.idev.excel.converters.ConverterKeyBuild;
import cn.idev.excel.converters.DefaultConverterLoader;
import cn.idev.excel.enums.HolderEnum;
import cn.idev.excel.metadata.AbstractHolder;
import cn.idev.excel.read.listener.ModelBuildEventListener;
import cn.idev.excel.read.listener.ReadListener;
import cn.idev.excel.read.metadata.ReadBasicParameter;
import cn.idev.excel.read.metadata.ReadWorkbook;
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
import cn.idev.excel.util.ListUtils;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;

View File

@ -2,12 +2,11 @@ package cn.idev.excel.read.metadata.holder;
import java.util.List;
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
import cn.idev.excel.metadata.ConfigurationHolder;
import cn.idev.excel.read.listener.ReadListener;
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
/**
*
* Get the corresponding Holder
*
* @author Jiaju Zhuang

View File

@ -4,11 +4,10 @@ import java.util.LinkedHashMap;
import java.util.Map;
import cn.idev.excel.enums.HolderEnum;
import cn.idev.excel.read.metadata.ReadSheet;
import cn.idev.excel.metadata.Cell;
import cn.idev.excel.metadata.CellExtra;
import cn.idev.excel.metadata.data.ReadCellData;
import cn.idev.excel.read.metadata.ReadSheet;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;

View File

@ -3,7 +3,6 @@ package cn.idev.excel.read.metadata.holder.csv;
import cn.idev.excel.read.metadata.ReadWorkbook;
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
import cn.idev.excel.support.ExcelTypeEnum;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

View File

@ -7,7 +7,6 @@ import cn.idev.excel.enums.RowTypeEnum;
import cn.idev.excel.read.metadata.ReadSheet;
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;

View File

@ -5,6 +5,7 @@ import java.util.List;
import cn.idev.excel.read.metadata.ReadWorkbook;
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
import cn.idev.excel.support.ExcelTypeEnum;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
@ -14,8 +15,6 @@ import org.apache.poi.hssf.record.BoundSheetRecord;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import cn.idev.excel.support.ExcelTypeEnum;
/**
* Workbook holder
*

View File

@ -6,7 +6,6 @@ import java.util.LinkedList;
import cn.idev.excel.read.metadata.ReadSheet;
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

View File

@ -4,13 +4,12 @@ import java.util.Map;
import javax.xml.parsers.SAXParserFactory;
import cn.idev.excel.read.metadata.ReadWorkbook;
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
import cn.idev.excel.util.MapUtils;
import cn.idev.excel.constant.BuiltinFormats;
import cn.idev.excel.metadata.data.DataFormatData;
import cn.idev.excel.read.metadata.ReadWorkbook;
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
import cn.idev.excel.support.ExcelTypeEnum;
import cn.idev.excel.util.MapUtils;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

View File

@ -3,7 +3,6 @@ package cn.idev.excel.read.processor;
import cn.idev.excel.context.AnalysisContext;
/**
*
* Event processor
*
* @author jipengfei
@ -26,8 +25,7 @@ public interface AnalysisEventProcessor {
/**
* Notify after all analysed
*
* @param analysisContext
* Analysis context
* @param analysisContext Analysis context
*/
void endSheet(AnalysisContext analysisContext);
}

View File

@ -4,22 +4,21 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.enums.CellDataTypeEnum;
import cn.idev.excel.enums.HeadKindEnum;
import cn.idev.excel.enums.RowTypeEnum;
import cn.idev.excel.exception.ExcelAnalysisException;
import cn.idev.excel.exception.ExcelAnalysisStopException;
import cn.idev.excel.metadata.Head;
import cn.idev.excel.metadata.data.ReadCellData;
import cn.idev.excel.read.listener.ReadListener;
import cn.idev.excel.read.metadata.holder.ReadRowHolder;
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
import cn.idev.excel.util.BooleanUtils;
import cn.idev.excel.util.ConverterUtils;
import cn.idev.excel.util.StringUtils;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.exception.ExcelAnalysisException;
import cn.idev.excel.exception.ExcelAnalysisStopException;
import cn.idev.excel.metadata.Head;
import cn.idev.excel.metadata.data.ReadCellData;
import cn.idev.excel.read.listener.ReadListener;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -37,16 +36,28 @@ public class DefaultAnalysisEventProcessor implements AnalysisEventProcessor {
dealExtra(analysisContext);
}
/**
* Ends the processing of a row.
* This method is called after reading a row of data to perform corresponding processing.
* If the current row is empty and the workbook holder is set to ignore empty rows, then directly return without processing.
* If the row is not empty or empty rows are not ignored, then call the dealData method to process the data.
*
* @param analysisContext Analysis context, containing information about the current analysis, including the type and content of the row.
*/
@Override
public void endRow(AnalysisContext analysisContext) {
// Check if the current row is empty
if (RowTypeEnum.EMPTY.equals(analysisContext.readRowHolder().getRowType())) {
// Log debug information if the current row is empty
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Empty row!");
}
// If the workbook holder is set to ignore empty rows, then directly return
if (analysisContext.readWorkbookHolder().getIgnoreEmptyRow()) {
return;
}
}
// Call the data processing method
dealData(analysisContext);
}