
com.poiji.bind.mapping.SheetUnmarshaller Maven / Gradle / Ivy
package com.poiji.bind.mapping;
import com.poiji.exception.PoijiException;
import com.poiji.option.PoijiOptions;
import java.util.function.Consumer;
import java.util.stream.Stream;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* Created by hakan on 11.10.2020
*/
public final class SheetUnmarshaller extends HSSFUnmarshaller {
private final Sheet sheet;
SheetUnmarshaller(final Sheet sheet, final PoijiOptions options) {
super(options);
this.sheet = sheet;
}
@Override
public void unmarshal(Class type, Consumer super T> consumer) {
setBaseFormulaEvaluator();
processRowsToObjects(sheet, type, consumer);
}
private void setBaseFormulaEvaluator() {
Workbook workbook = workbook();
if (workbook instanceof HSSFWorkbook) {
baseFormulaEvaluator = HSSFFormulaEvaluator.create((HSSFWorkbook) workbook, null, null);
} else if (workbook instanceof XSSFWorkbook) {
baseFormulaEvaluator = XSSFFormulaEvaluator.create((XSSFWorkbook) workbook, null, null);
} else {
throw new PoijiException("Workbook is not supported.");
}
}
@Override
public Stream stream(final Class type) {
setBaseFormulaEvaluator();
return super.processRowsToStream(sheet, type);
}
@Override
protected Workbook workbook() {
return sheet.getWorkbook();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy