Skip to content
Open
4 changes: 4 additions & 0 deletions fesod-sheet/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel-support</artifactId>
</dependency>
<dependency>
<groupId>org.odftoolkit</groupId>
<artifactId>odfdom-java</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,14 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.fesod.sheet.analysis.csv.CsvExcelReadExecutor;
import org.apache.fesod.sheet.analysis.ods.OdsExcelReadExecutor;
import org.apache.fesod.sheet.analysis.v03.XlsSaxAnalyser;
import org.apache.fesod.sheet.analysis.v07.XlsxSaxAnalyser;
import org.apache.fesod.sheet.context.AnalysisContext;
import org.apache.fesod.sheet.context.csv.CsvReadContext;
import org.apache.fesod.sheet.context.csv.DefaultCsvReadContext;
import org.apache.fesod.sheet.context.ods.DefaultOdsReadContext;
import org.apache.fesod.sheet.context.ods.OdsReadContext;
import org.apache.fesod.sheet.context.xls.DefaultXlsReadContext;
import org.apache.fesod.sheet.context.xls.XlsReadContext;
import org.apache.fesod.sheet.context.xlsx.DefaultXlsxReadContext;
Expand All @@ -39,6 +42,7 @@
import org.apache.fesod.sheet.read.metadata.ReadWorkbook;
import org.apache.fesod.sheet.read.metadata.holder.ReadWorkbookHolder;
import org.apache.fesod.sheet.read.metadata.holder.csv.CsvReadWorkbookHolder;
import org.apache.fesod.sheet.read.metadata.holder.ods.OdsReadWorkbookHolder;
import org.apache.fesod.sheet.read.metadata.holder.xls.XlsReadWorkbookHolder;
import org.apache.fesod.sheet.read.metadata.holder.xlsx.XlsxReadWorkbookHolder;
import org.apache.fesod.sheet.support.ExcelTypeEnum;
Expand Down Expand Up @@ -165,6 +169,12 @@ private void chooseExcelExecutor(ReadWorkbook readWorkbook) throws Exception {
analysisContext = csvReadContext;
excelReadExecutor = new CsvExcelReadExecutor(csvReadContext);
break;
case ODS:
// Create a context and executor for processing ODS files
OdsReadContext odsReadContext = new DefaultOdsReadContext(readWorkbook, ExcelTypeEnum.ODS);
analysisContext = odsReadContext;
excelReadExecutor = new OdsExcelReadExecutor(odsReadContext);
break;
default:
// Reserved branch for handling potential future Excel types
break;
Expand Down Expand Up @@ -260,6 +270,18 @@ public void finish() {
throwable = t;
}

// close ods.
try {
if ((readWorkbookHolder instanceof OdsReadWorkbookHolder)
&& ((OdsReadWorkbookHolder) readWorkbookHolder).getOdfSpreadsheetDocument() != null) {
((OdsReadWorkbookHolder) readWorkbookHolder)
.getOdfSpreadsheetDocument()
.close();
}
} catch (Throwable t) {
throwable = t;
}

try {
if (analysisContext.readWorkbookHolder().getAutoCloseStream()
&& readWorkbookHolder.getInputStream() != null) {
Expand Down
Loading
Loading