IDEMPIERE-6117 POI: WorkbookFactory.create cannot be used to open XLSX files (#2357)
* IDEMPIERE-6117 POI: WorkbookFactory.create cannot be used to open XLSX files * IDEMPIERE-6117 POI: WorkbookFactory.create cannot be used to open XLSX files * IDEMPIERE-6117 POI: WorkbookFactory.create cannot be used to open XLSX files - Incorporate patch from Carlos
This commit is contained in:
parent
0f02545dbb
commit
4875568cf2
|
@ -0,0 +1,25 @@
|
|||
-- IDEMPIERE-6040 Improvements for CSV import template
|
||||
SELECT register_migration_script('202405131534_IDEMPIERE-6040.sql') FROM dual;
|
||||
|
||||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- May 13, 2024, 3:34:49 PM CEST
|
||||
UPDATE AD_Ref_List SET Name='Comma-separated values (CSV)',Updated=TO_TIMESTAMP('2024-05-13 15:34:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200704
|
||||
;
|
||||
|
||||
-- May 13, 2024, 3:35:58 PM CEST
|
||||
UPDATE AD_Ref_List SET Name='Excel (XLS/XLSX)',Updated=TO_TIMESTAMP('2024-05-13 15:35:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200706
|
||||
;
|
||||
|
||||
-- May 13, 2024, 3:36:02 PM CEST
|
||||
UPDATE AD_Ref_List SET IsActive='N',Updated=TO_TIMESTAMP('2024-05-13 15:36:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200705
|
||||
;
|
||||
|
||||
UPDATE AD_ImportTemplate SET ImportTemplateType='XLSX' WHERE ImportTemplateType='XLS'
|
||||
;
|
||||
|
||||
-- May 13, 2024, 3:59:49 PM CEST
|
||||
UPDATE AD_Field SET SeqNo=120, ColumnSpan=2,Updated=TO_TIMESTAMP('2024-05-13 15:59:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=208476
|
||||
;
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
-- IDEMPIERE-6040 Improvements for CSV import template
|
||||
SELECT register_migration_script('202405131534_IDEMPIERE-6040.sql') FROM dual;
|
||||
|
||||
-- May 13, 2024, 3:34:49 PM CEST
|
||||
UPDATE AD_Ref_List SET Name='Comma-separated values (CSV)',Updated=TO_TIMESTAMP('2024-05-13 15:34:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200704
|
||||
;
|
||||
|
||||
-- May 13, 2024, 3:35:58 PM CEST
|
||||
UPDATE AD_Ref_List SET Name='Excel (XLS/XLSX)',Updated=TO_TIMESTAMP('2024-05-13 15:35:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200706
|
||||
;
|
||||
|
||||
-- May 13, 2024, 3:36:02 PM CEST
|
||||
UPDATE AD_Ref_List SET IsActive='N',Updated=TO_TIMESTAMP('2024-05-13 15:36:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200705
|
||||
;
|
||||
|
||||
UPDATE AD_ImportTemplate SET ImportTemplateType='XLSX' WHERE ImportTemplateType='XLS'
|
||||
;
|
||||
|
||||
-- May 13, 2024, 3:59:49 PM CEST
|
||||
UPDATE AD_Field SET SeqNo=120, ColumnSpan=2,Updated=TO_TIMESTAMP('2024-05-13 15:59:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=208476
|
||||
;
|
||||
|
|
@ -273,6 +273,10 @@
|
|||
id="org.apache.commons.commons-compress"
|
||||
version="0.0.0"/>
|
||||
|
||||
<plugin
|
||||
id="org.apache.commons.commons-io"
|
||||
version="0.0.0"/>
|
||||
|
||||
<plugin
|
||||
id="org.apache.commons.commons-net"
|
||||
version="0.0.0"/>
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.gogo.runtime@default:default"/>
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.gogo.runtime@default:default"/>
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.gogo.runtime@default:default"/>
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.gogo.runtime@default:default"/>
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.gogo.runtime@default:default"/>
|
||||
|
|
|
@ -28,6 +28,14 @@ import java.util.Map;
|
|||
import java.util.Properties;
|
||||
|
||||
import org.adempiere.base.equinox.StackTraceCommand;
|
||||
import org.apache.poi.extractor.ExtractorFactory;
|
||||
import org.apache.poi.extractor.MainExtractorFactory;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbookFactory;
|
||||
import org.apache.poi.ooxml.extractor.POIXMLExtractorFactory;
|
||||
import org.apache.poi.sl.usermodel.SlideShowFactory;
|
||||
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;
|
||||
import org.apache.poi.xslf.usermodel.XSLFSlideShowFactory;
|
||||
import org.compiere.Adempiere;
|
||||
import org.eclipse.osgi.framework.console.CommandProvider;
|
||||
import org.osgi.framework.BundleActivator;
|
||||
|
@ -61,6 +69,13 @@ public class BaseActivator implements BundleActivator {
|
|||
context.registerService(CommandProvider.class.getName(), new StackTraceCommand(), null);
|
||||
|
||||
blacklistService = new ComponentBlackListService(context);
|
||||
|
||||
//setup poi factory
|
||||
WorkbookFactory.addProvider(new HSSFWorkbookFactory());
|
||||
WorkbookFactory.addProvider(new XSSFWorkbookFactory());
|
||||
SlideShowFactory.addProvider(new XSLFSlideShowFactory());
|
||||
ExtractorFactory.addProvider(new POIXMLExtractorFactory());
|
||||
ExtractorFactory.addProvider(new MainExtractorFactory());
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -120,6 +135,14 @@ public class BaseActivator implements BundleActivator {
|
|||
blacklistService.stop(context);
|
||||
blacklistService = null;
|
||||
}
|
||||
|
||||
//remove poi factory
|
||||
WorkbookFactory.removeProvider(HSSFWorkbookFactory.class);
|
||||
WorkbookFactory.removeProvider(XSSFWorkbookFactory.class);
|
||||
SlideShowFactory.removeProvider(XSLFSlideShowFactory.class);
|
||||
ExtractorFactory.removeProvider(POIXMLExtractorFactory.class);
|
||||
ExtractorFactory.removeProvider(MainExtractorFactory.class);
|
||||
|
||||
Adempiere.stop();
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import org.compiere.util.KeyNamePair;
|
|||
|
||||
/** Generated Interface for AD_ImportTemplate
|
||||
* @author iDempiere (generated)
|
||||
* @version Release 11
|
||||
* @version Release 12
|
||||
*/
|
||||
public interface I_AD_ImportTemplate
|
||||
{
|
||||
|
|
|
@ -34,13 +34,12 @@ import java.util.Properties;
|
|||
import java.util.logging.Level;
|
||||
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbookFactory;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.CellType;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;
|
||||
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||
import org.compiere.util.CCache;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
|
@ -238,8 +237,7 @@ public class MImportTemplate extends X_AD_ImportTemplate implements ImmutablePOS
|
|||
*/
|
||||
public InputStream validateFile(InputStream in) {
|
||||
|
||||
if ( MImportTemplate.IMPORTTEMPLATETYPE_XLS.equals(getImportTemplateType())
|
||||
|| MImportTemplate.IMPORTTEMPLATETYPE_XLSX.equals(getImportTemplateType())) {
|
||||
if (MImportTemplate.IMPORTTEMPLATETYPE_ExcelXLSXLSX.equals(getImportTemplateType())) {
|
||||
try {
|
||||
in = convertExcelToCSV(in);
|
||||
} catch (Exception e) {
|
||||
|
@ -308,17 +306,7 @@ public class MImportTemplate extends X_AD_ImportTemplate implements ImmutablePOS
|
|||
*/
|
||||
public InputStream convertExcelToCSV(InputStream excelIs) throws IOException {
|
||||
|
||||
Workbook workbook = null;
|
||||
if (MImportTemplate.IMPORTTEMPLATETYPE_XLS.equals(getImportTemplateType())) {
|
||||
HSSFWorkbookFactory xlsWbf = new HSSFWorkbookFactory();
|
||||
workbook = xlsWbf.create(excelIs);
|
||||
} else if (MImportTemplate.IMPORTTEMPLATETYPE_XLSX.equals(getImportTemplateType())) {
|
||||
XSSFWorkbookFactory xlsxWbf = new XSSFWorkbookFactory();
|
||||
workbook = xlsxWbf.create(excelIs);
|
||||
} else {
|
||||
// unexpected error
|
||||
throw new AdempiereException("Wrong template type -> " + getImportTemplateType());
|
||||
}
|
||||
Workbook workbook = WorkbookFactory.create(excelIs);
|
||||
|
||||
List<Integer> colTypes = calculateAndValidateColumnTypes();
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ import org.compiere.util.KeyNamePair;
|
|||
|
||||
/** Generated Model for AD_ImportTemplate
|
||||
* @author iDempiere (generated)
|
||||
* @version Release 11 - $Id$ */
|
||||
* @version Release 12 - $Id$ */
|
||||
@org.adempiere.base.Model(table="AD_ImportTemplate")
|
||||
public class X_AD_ImportTemplate extends PO implements I_AD_ImportTemplate, I_Persistent
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ public class X_AD_ImportTemplate extends PO implements I_AD_ImportTemplate, I_Pe
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 20240327L;
|
||||
private static final long serialVersionUID = 20240513L;
|
||||
|
||||
/** Standard Constructor */
|
||||
public X_AD_ImportTemplate (Properties ctx, int AD_ImportTemplate_ID, String trxName)
|
||||
|
@ -300,12 +300,12 @@ public class X_AD_ImportTemplate extends PO implements I_AD_ImportTemplate, I_Pe
|
|||
|
||||
/** ImportTemplateType AD_Reference_ID=200268 */
|
||||
public static final int IMPORTTEMPLATETYPE_AD_Reference_ID=200268;
|
||||
/** CSV = CSV */
|
||||
public static final String IMPORTTEMPLATETYPE_CSV = "CSV";
|
||||
/** Comma-separated values (CSV) = CSV */
|
||||
public static final String IMPORTTEMPLATETYPE_Comma_SeparatedValuesCSV = "CSV";
|
||||
/** XLS = XLS */
|
||||
public static final String IMPORTTEMPLATETYPE_XLS = "XLS";
|
||||
/** XLSX = XLSX */
|
||||
public static final String IMPORTTEMPLATETYPE_XLSX = "XLSX";
|
||||
/** Excel (XLS/XLSX) = XLSX */
|
||||
public static final String IMPORTTEMPLATETYPE_ExcelXLSXLSX = "XLSX";
|
||||
/** Set Import Template Type.
|
||||
@param ImportTemplateType Import Template Type
|
||||
*/
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.gogo.runtime@default:default"/>
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.scr@1:true"/>
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
<setEntry value="org.apache.commons.commons-codec@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-collections4@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-compress@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-io@default:default"/>
|
||||
<setEntry value="org.apache.commons.commons-net@default:default"/>
|
||||
<setEntry value="org.apache.commons.logging@default:default"/>
|
||||
<setEntry value="org.apache.felix.scr@1:true"/>
|
||||
|
|
|
@ -30,6 +30,7 @@ osgi.bundles=org.apache.felix.scr@1:start,\
|
|||
wrapped.org.apache.poi.poi-ooxml,\
|
||||
wrapped.org.apache.poi.poi-ooxml-lite,\
|
||||
org.apache.commons.commons-compress,\
|
||||
org.apache.commons.commons-io,\
|
||||
wrapped.org.apache.xmlbeans.xmlbeans,\
|
||||
org.eclipse.core.jobs,\
|
||||
org.eclipse.equinox.preferences,\
|
||||
|
|
|
@ -126,9 +126,14 @@
|
|||
</requirement>
|
||||
<requirement>
|
||||
<type>eclipse-plugin</type>
|
||||
<id>org.idempiere.tablepartition</id>
|
||||
<versionRange>0.0.0</versionRange>
|
||||
</requirement>
|
||||
<id>org.idempiere.tablepartition</id>
|
||||
<versionRange>0.0.0</versionRange>
|
||||
</requirement>
|
||||
<requirement>
|
||||
<type>eclipse-plugin</type>
|
||||
<id>wrapped.org.apache.xmlbeans.xmlbeans</id>
|
||||
<versionRange>0.0.0</versionRange>
|
||||
</requirement>
|
||||
</extraRequirements>
|
||||
</dependency-resolution>
|
||||
</configuration>
|
||||
|
|
Loading…
Reference in New Issue