修改参数模版导入
This commit is contained in:
@@ -124,7 +124,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.afterturn</groupId>
|
<groupId>cn.afterturn</groupId>
|
||||||
<artifactId>easypoi-base</artifactId>
|
<artifactId>easypoi-base</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>3.3.0</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>org.apache.poi</groupId>
|
<groupId>org.apache.poi</groupId>
|
||||||
@@ -143,12 +143,31 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.afterturn</groupId>
|
<groupId>cn.afterturn</groupId>
|
||||||
<artifactId>easypoi-web</artifactId>
|
<artifactId>easypoi-web</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>3.3.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.afterturn</groupId>
|
<groupId>cn.afterturn</groupId>
|
||||||
<artifactId>easypoi-annotation</artifactId>
|
<artifactId>easypoi-annotation</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>3.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.monitorjbl</groupId>
|
||||||
|
<artifactId>xlsx-streamer</artifactId>
|
||||||
|
<version>1.2.0</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-ooxml-schemas</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-ooxml</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.junrar</groupId>
|
<groupId>com.github.junrar</groupId>
|
||||||
|
|||||||
+15
-11
@@ -6,6 +6,7 @@ import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.ZipUtil;
|
import cn.hutool.core.util.ZipUtil;
|
||||||
|
import cn.hutool.poi.excel.ExcelReader;
|
||||||
import com.aliyuncs.utils.IOUtils;
|
import com.aliyuncs.utils.IOUtils;
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -25,6 +26,7 @@ import com.jero.modules.cert.template.mapper.ParamsInfoEOMapper;
|
|||||||
import com.jero.modules.cert.template.service.ICertCategoryParamsInfoEOService;
|
import com.jero.modules.cert.template.service.ICertCategoryParamsInfoEOService;
|
||||||
import com.jero.modules.cert.template.service.IParamsInfoEOService;
|
import com.jero.modules.cert.template.service.IParamsInfoEOService;
|
||||||
import com.jero.modules.cert.template.utils.CommonExcelExportStyler;
|
import com.jero.modules.cert.template.utils.CommonExcelExportStyler;
|
||||||
|
import com.jero.modules.cert.template.utils.RightSheetExcelImportUtil;
|
||||||
import com.jero.modules.cert.template.vo.*;
|
import com.jero.modules.cert.template.vo.*;
|
||||||
import com.jero.modules.oss.entity.OSSFile;
|
import com.jero.modules.oss.entity.OSSFile;
|
||||||
import com.jero.modules.oss.service.IOSSFileService;
|
import com.jero.modules.oss.service.IOSSFileService;
|
||||||
@@ -34,6 +36,7 @@ import com.jero.modules.system.entity.SysCategory;
|
|||||||
import com.jero.modules.system.entity.SysDictItem;
|
import com.jero.modules.system.entity.SysDictItem;
|
||||||
import com.jero.modules.system.service.ISysDictItemService;
|
import com.jero.modules.system.service.ISysDictItemService;
|
||||||
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
|
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
|
||||||
|
import com.monitorjbl.xlsx.StreamingReader;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -904,8 +907,11 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
// 导入参数设置,默认即可
|
// 导入参数设置,默认即可
|
||||||
ImportParams params = new ImportParams();
|
ImportParams params = new ImportParams();
|
||||||
try {
|
try {
|
||||||
// 取数据
|
Workbook workbook = StreamingReader.builder()
|
||||||
XSSFWorkbook workbook=new XSSFWorkbook(new FileInputStream(excelfile));
|
.rowCacheSize(10 * 10)
|
||||||
|
.bufferSize(1024 * 4)
|
||||||
|
.open(new FileInputStream(excelfile));
|
||||||
|
|
||||||
List<ParamsInfoCnImport> paramsInfoEOList = new ArrayList<>();
|
List<ParamsInfoCnImport> paramsInfoEOList = new ArrayList<>();
|
||||||
Map<String,List<CertCategoryParamsInfoCnImport>> certCategoryParamsInfoEOListMap = new HashMap<>();
|
Map<String,List<CertCategoryParamsInfoCnImport>> certCategoryParamsInfoEOListMap = new HashMap<>();
|
||||||
|
|
||||||
@@ -936,16 +942,16 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
"Description", "*Control Component", "Validate Component", "Component Value", "Default Value", "File Template"};
|
"Description", "*Control Component", "Validate Component", "Component Value", "Default Value", "File Template"};
|
||||||
params.setImportFields(fields);
|
params.setImportFields(fields);
|
||||||
|
|
||||||
ExcelImportResult<ParamsInfoEnImport> resultEn = ExcelImportUtil.importExcelMore(excelfile,ParamsInfoEnImport.class, params);
|
// importExcelBySax 方法有bug,仅能导入第一个sheet页,所以仅针对numSheet为0的时候使用
|
||||||
List<ParamsInfoEnImport> paramsInfoEOListEn = resultEn.getList();
|
List<ParamsInfoEnImport> paramsInfoEOListEn = RightSheetExcelImportUtil.importExcelBySax(new FileInputStream(excelfile), ParamsInfoCnImport.class, params);
|
||||||
|
|
||||||
copyParamsInfoList(paramsInfoEOListEn, paramsInfoEOList);
|
copyParamsInfoList(paramsInfoEOListEn, paramsInfoEOList);
|
||||||
} else {
|
} else {
|
||||||
String fields[] ={ "*NIO编号", "*是否必填", "*参数名称","*参数批次","*责任领域",
|
String fields[] ={ "*NIO编号", "*是否必填", "*参数名称","*参数批次","*责任领域",
|
||||||
"参数说明", "*控件类型", "控件校验", "控件备选值", "默认值", "附件模板"};
|
"参数说明", "*控件类型", "控件校验", "控件备选值", "默认值", "附件模板"};
|
||||||
params.setImportFields(fields);
|
params.setImportFields(fields);
|
||||||
|
// importExcelBySax 方法有bug,仅能导入第一个sheet页,所以仅针对numSheet为0的时候使用
|
||||||
ExcelImportResult<ParamsInfoCnImport> result = ExcelImportUtil.importExcelMore(excelfile, ParamsInfoCnImport.class, params);
|
paramsInfoEOList = RightSheetExcelImportUtil.importExcelBySax(new FileInputStream(excelfile), ParamsInfoCnImport.class, params);
|
||||||
paramsInfoEOList = result.getList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { // 认证类别参数表
|
} else { // 认证类别参数表
|
||||||
@@ -955,15 +961,13 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
String fields[] ={ "*NIO Number", "*Number", "*Para Name","Description"};
|
String fields[] ={ "*NIO Number", "*Number", "*Para Name","Description"};
|
||||||
params.setImportFields(fields);
|
params.setImportFields(fields);
|
||||||
|
|
||||||
ExcelImportResult<CertCategoryParamsInfoEnImport> resultEn = ExcelImportUtil.importExcelMore(excelfile, CertCategoryParamsInfoEnImport.class, params);
|
List<CertCategoryParamsInfoEnImport> listEn = RightSheetExcelImportUtil.importExcelBySax(new FileInputStream(excelfile), CertCategoryParamsInfoEnImport.class, params);
|
||||||
List<CertCategoryParamsInfoEnImport> listEn = resultEn.getList();
|
|
||||||
copycertCategoryParamsInfoList(listEn, list);
|
copycertCategoryParamsInfoList(listEn, list);
|
||||||
} else {
|
} else {
|
||||||
String fields[] ={ "*NIO编号", "*编号", "*参数名称","参数说明"};
|
String fields[] ={ "*NIO编号", "*编号", "*参数名称","参数说明"};
|
||||||
params.setImportFields(fields);
|
params.setImportFields(fields);
|
||||||
|
|
||||||
ExcelImportResult<CertCategoryParamsInfoCnImport> result = ExcelImportUtil.importExcelMore(excelfile, CertCategoryParamsInfoCnImport.class, params);
|
list = RightSheetExcelImportUtil.importExcelBySax(new FileInputStream(excelfile), CertCategoryParamsInfoCnImport.class, params);
|
||||||
list = result.getList();
|
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(list)) {
|
if (CollectionUtil.isNotEmpty(list)) {
|
||||||
list.remove(0); // 去掉填写说明
|
list.remove(0); // 去掉填写说明
|
||||||
|
|||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
package com.jero.modules.cert.template.utils;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||||
|
import cn.afterturn.easypoi.excel.imports.sax.SaxReadExcel;
|
||||||
|
import cn.afterturn.easypoi.excel.imports.sax.parse.ISaxRowRead;
|
||||||
|
import cn.afterturn.easypoi.handler.inter.IExcelReadRowHandler;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 覆写为正确的sheet读取的工具类
|
||||||
|
*/
|
||||||
|
public class RightSheetExcelImportUtil {
|
||||||
|
|
||||||
|
public static <T> List<T> importExcelBySax(InputStream inputstream, Class<?> pojoClass, ImportParams params) {
|
||||||
|
return (new RightSheetSaxReadExcel()).readExcel(inputstream, pojoClass, params, (ISaxRowRead)null, (IExcelReadRowHandler)null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+81
@@ -0,0 +1,81 @@
|
|||||||
|
package com.jero.modules.cert.template.utils;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||||
|
import cn.afterturn.easypoi.excel.imports.sax.SaxReadExcel;
|
||||||
|
import cn.afterturn.easypoi.excel.imports.sax.SheetHandler;
|
||||||
|
import cn.afterturn.easypoi.excel.imports.sax.parse.ISaxRowRead;
|
||||||
|
import cn.afterturn.easypoi.excel.imports.sax.parse.SaxRowRead;
|
||||||
|
import cn.afterturn.easypoi.exception.excel.ExcelImportException;
|
||||||
|
import cn.afterturn.easypoi.handler.inter.IExcelReadRowHandler;
|
||||||
|
import org.apache.poi.openxml4j.opc.OPCPackage;
|
||||||
|
import org.apache.poi.xssf.eventusermodel.XSSFReader;
|
||||||
|
import org.apache.poi.xssf.model.SharedStringsTable;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.xml.sax.ContentHandler;
|
||||||
|
import org.xml.sax.InputSource;
|
||||||
|
import org.xml.sax.SAXException;
|
||||||
|
import org.xml.sax.XMLReader;
|
||||||
|
import org.xml.sax.helpers.XMLReaderFactory;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修复SaxReadExcel Sheet不正确的问题
|
||||||
|
*/
|
||||||
|
public class RightSheetSaxReadExcel extends SaxReadExcel {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(RightSheetSaxReadExcel.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> readExcel(InputStream inputstream, Class<?> pojoClass, ImportParams params, ISaxRowRead rowRead, IExcelReadRowHandler hanlder) {
|
||||||
|
try {
|
||||||
|
OPCPackage opcPackage = OPCPackage.open(inputstream);
|
||||||
|
return this.readExcel(opcPackage, pojoClass, params, rowRead, hanlder);
|
||||||
|
} catch (Exception var7) {
|
||||||
|
LOGGER.error(var7.getMessage(), var7);
|
||||||
|
throw new ExcelImportException(var7.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> List<T> readExcel(OPCPackage opcPackage, Class<?> pojoClass, ImportParams params, ISaxRowRead rowRead, IExcelReadRowHandler hanlder) {
|
||||||
|
try {
|
||||||
|
XSSFReader xssfReader = new XSSFReader(opcPackage);
|
||||||
|
SharedStringsTable sst = xssfReader.getSharedStringsTable();
|
||||||
|
if (rowRead == null) {
|
||||||
|
rowRead = new SaxRowRead(pojoClass, params, hanlder);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLReader parser = this.fetchSheetParser(sst, (ISaxRowRead)rowRead);
|
||||||
|
Iterator<InputStream> sheets = xssfReader.getSheetsData();
|
||||||
|
int sheetIndex = 0;
|
||||||
|
|
||||||
|
while (sheets.hasNext() && sheetIndex < params.getSheetNum() + params.getStartSheetIndex()) {
|
||||||
|
if (sheetIndex < params.getStartSheetIndex()) {
|
||||||
|
sheets.next();
|
||||||
|
} else {
|
||||||
|
InputStream sheet = sheets.next();
|
||||||
|
InputSource sheetSource = new InputSource(sheet);
|
||||||
|
parser.parse(sheetSource);
|
||||||
|
sheet.close();
|
||||||
|
}
|
||||||
|
sheetIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ((ISaxRowRead)rowRead).getList();
|
||||||
|
} catch (Exception var13) {
|
||||||
|
LOGGER.error(var13.getMessage(), var13);
|
||||||
|
throw new ExcelImportException("SAX导入数据失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private XMLReader fetchSheetParser(SharedStringsTable sst, ISaxRowRead rowRead) throws SAXException {
|
||||||
|
XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
|
||||||
|
ContentHandler handler = new SheetHandler(sst, rowRead);
|
||||||
|
parser.setContentHandler(handler);
|
||||||
|
return parser;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user