@@ -6,14 +6,14 @@ EasyPoi Excel和 Word简易工具类 | |||
就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 | |||
语言(熟悉的表达式语法),完成以前复杂的写法 | |||
官网: http://www.afterturn.cn/ | |||
官网: http://opensource.afterturn.cn/ | |||
邮箱: qrb.jueyue@foxmail.com | |||
QQ群: 1群 364192721(满) 2 群116844390 | |||
开发者:魔幻之翼 xf.key@163.com | |||
Spring Boot 支持 https://gitee.com/lemur/easypoi-spring-boot-starter | |||
[官网](http://opensource.afterturn.cn) | |||
[官网](https://opensource.afterturn.cn) | |||
[VIP技术服务-账号忘了,还是QQ吧](https://lemur.taobao.com) | |||
@@ -24,7 +24,7 @@ Spring Boot 支持 https://gitee.com/lemur/easypoi-spring-boot-starter | |||
**开发指南** | |||
**[http://opensource.afterturn.cn/doc/easypoi.html](http://opensource.afterturn.cn/doc/easypoi.html)** | |||
**[https://opensource.afterturn.cn/doc/easypoi.html](http://opensource.afterturn.cn/doc/easypoi.html)** | |||
[API文档](https://apidoc.gitee.com/lemur/easypoi/) | |||
@@ -100,17 +100,17 @@ https://oss.sonatype.org/content/groups/public/ | |||
<dependency> | |||
<groupId>cn.afterturn</groupId> | |||
<artifactId>easypoi-base</artifactId> | |||
<version>3.3.0</version> | |||
<version>4.0.0</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>cn.afterturn</groupId> | |||
<artifactId>easypoi-web</artifactId> | |||
<version>3.3.0</version> | |||
<version>4.0.0</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>cn.afterturn</groupId> | |||
<artifactId>easypoi-annotation</artifactId> | |||
<version>3.3.0</version> | |||
<version>4.0.0</version> | |||
</dependency> | |||
``` | |||
@@ -4,7 +4,7 @@ | |||
<parent> | |||
<groupId>cn.afterturn</groupId> | |||
<artifactId>easypoi</artifactId> | |||
<version>4.0.0-SNAPSHOT</version> | |||
<version>4.0.0</version> | |||
</parent> | |||
<artifactId>easypoi-annotation</artifactId> | |||
<description>基础注解类,解耦合</description> |
@@ -4,7 +4,7 @@ | |||
<parent> | |||
<groupId>cn.afterturn</groupId> | |||
<artifactId>easypoi</artifactId> | |||
<version>4.0.0-SNAPSHOT</version> | |||
<version>4.0.0</version> | |||
</parent> | |||
<artifactId>easypoi-base</artifactId> | |||
<dependencies> | |||
@@ -1,8 +1,8 @@ | |||
package cn.afterturn.easypoi.csv; | |||
import cn.afterturn.easypoi.csv.entity.CsvImportParams; | |||
import cn.afterturn.easypoi.csv.handler.ICsvSaveDataHandler; | |||
import cn.afterturn.easypoi.csv.imports.CsvImportService; | |||
import cn.afterturn.easypoi.handler.inter.IReadHandler; | |||
import java.io.InputStream; | |||
import java.util.List; | |||
@@ -40,7 +40,7 @@ public final class CsvImportUtil { | |||
* @return | |||
*/ | |||
public static void importCsv(InputStream inputstream, Class<?> pojoClass, | |||
CsvImportParams params, ICsvSaveDataHandler saveDataHandler) { | |||
new CsvImportService().readExcel(inputstream, pojoClass, params, saveDataHandler); | |||
CsvImportParams params, IReadHandler readHandler) { | |||
new CsvImportService().readExcel(inputstream, pojoClass, params, readHandler); | |||
} | |||
} |
@@ -1,17 +0,0 @@ | |||
package cn.afterturn.easypoi.csv.handler; | |||
/** | |||
* 保存数据 | |||
* 鉴于CSV可能都是大数据,还是调用接口直接保存,避免内存占用 | |||
* | |||
* @author by jueyue on 18-10-3. | |||
*/ | |||
public interface ICsvSaveDataHandler<T> { | |||
/** | |||
* 保存数据 | |||
* | |||
* @param t | |||
*/ | |||
public void save(T t); | |||
} |
@@ -1,7 +1,6 @@ | |||
package cn.afterturn.easypoi.csv.imports; | |||
import cn.afterturn.easypoi.csv.entity.CsvImportParams; | |||
import cn.afterturn.easypoi.csv.handler.ICsvSaveDataHandler; | |||
import cn.afterturn.easypoi.excel.annotation.ExcelTarget; | |||
import cn.afterturn.easypoi.excel.entity.params.ExcelCollectionParams; | |||
import cn.afterturn.easypoi.excel.entity.params.ExcelImportEntity; | |||
@@ -11,6 +10,7 @@ import cn.afterturn.easypoi.excel.imports.base.ImportBaseService; | |||
import cn.afterturn.easypoi.exception.excel.ExcelImportException; | |||
import cn.afterturn.easypoi.exception.excel.enums.ExcelImportEnum; | |||
import cn.afterturn.easypoi.handler.inter.IExcelModel; | |||
import cn.afterturn.easypoi.handler.inter.IReadHandler; | |||
import cn.afterturn.easypoi.util.PoiPublicUtil; | |||
import cn.afterturn.easypoi.util.PoiReflectorUtil; | |||
import cn.afterturn.easypoi.util.PoiValidationUtil; | |||
@@ -41,7 +41,7 @@ public class CsvImportService extends ImportBaseService { | |||
this.cellValueServer = new CellValueService(); | |||
} | |||
public <T> List<T> readExcel(InputStream inputstream, Class<?> pojoClass, CsvImportParams params, ICsvSaveDataHandler saveDataHandler) { | |||
public <T> List<T> readExcel(InputStream inputstream, Class<?> pojoClass, CsvImportParams params, IReadHandler readHandler) { | |||
List collection = new ArrayList(); | |||
try { | |||
Map<String, ExcelImportEntity> excelParams = new HashMap<String, ExcelImportEntity>(); | |||
@@ -120,8 +120,8 @@ public class CsvImportService extends ImportBaseService { | |||
addListContinue(object, param, row, titlemap, targetId, params, errorMsg); | |||
} | |||
if (verifyingDataValidity(object, params, pojoClass, errorMsg)) { | |||
if (saveDataHandler != null) { | |||
saveDataHandler.save(object); | |||
if (readHandler != null) { | |||
readHandler.handler(object); | |||
} else { | |||
collection.add(object); | |||
} | |||
@@ -138,6 +138,9 @@ public class CsvImportService extends ImportBaseService { | |||
} | |||
readRow++; | |||
} | |||
if (readHandler != null) { | |||
readHandler.doAfterAll(); | |||
} | |||
} catch (Exception e) { | |||
LOGGER.error(e.getMessage(), e); | |||
} | |||
@@ -20,6 +20,7 @@ import java.io.FileInputStream; | |||
import java.io.InputStream; | |||
import java.util.List; | |||
import cn.afterturn.easypoi.handler.inter.IReadHandler; | |||
import org.apache.poi.util.IOUtils; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
@@ -28,9 +29,7 @@ import cn.afterturn.easypoi.excel.entity.ImportParams; | |||
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; | |||
import cn.afterturn.easypoi.excel.imports.ExcelImportService; | |||
import cn.afterturn.easypoi.excel.imports.sax.SaxReadExcel; | |||
import cn.afterturn.easypoi.excel.imports.sax.parse.ISaxRowRead; | |||
import cn.afterturn.easypoi.exception.excel.ExcelImportException; | |||
import cn.afterturn.easypoi.handler.inter.IExcelReadRowHandler; | |||
/** | |||
* Excel 导入工具 | |||
@@ -124,20 +123,6 @@ public class ExcelImportUtil { | |||
} | |||
} | |||
/** | |||
* Excel 通过SAX解析方法,适合大数据导入,不支持图片 | |||
* 导入 数据源IO流,不返回校验结果 导入 字段类型 Integer,Long,Double,Date,String,Boolean | |||
* | |||
* @param inputstream | |||
* @param pojoClass | |||
* @param params | |||
* @return | |||
*/ | |||
public static <T> List<T> importExcelBySax(InputStream inputstream, Class<?> pojoClass, | |||
ImportParams params) { | |||
return new SaxReadExcel().readExcel(inputstream, pojoClass, params, null, null); | |||
} | |||
/** | |||
* Excel 通过SAX解析方法,适合大数据导入,不支持图片 | |||
* 导入 数据源本地文件,不返回校验结果 导入 字 段类型 Integer,Long,Double,Date,String,Boolean | |||
@@ -149,20 +134,8 @@ public class ExcelImportUtil { | |||
*/ | |||
@SuppressWarnings("rawtypes") | |||
public static void importExcelBySax(InputStream inputstream, Class<?> pojoClass, | |||
ImportParams params, IExcelReadRowHandler hanlder) { | |||
new SaxReadExcel().readExcel(inputstream, pojoClass, params, null, hanlder); | |||
} | |||
/** | |||
* Excel 通过SAX解析方法,适合大数据导入,不支持图片 | |||
* 导入 数据源IO流,不返回校验结果 导入 字段类型 Integer,Long,Double,Date,String,Boolean | |||
* | |||
* @param inputstream | |||
* @param rowRead | |||
* @return | |||
*/ | |||
public static <T> List<T> importExcelBySax(InputStream inputstream, ISaxRowRead rowRead) { | |||
return new SaxReadExcel().readExcel(inputstream, null, null, rowRead, null); | |||
ImportParams params, IReadHandler hanlder) { | |||
new SaxReadExcel().readExcel(inputstream, pojoClass, params, hanlder); | |||
} | |||
} |
@@ -19,6 +19,7 @@ import java.io.InputStream; | |||
import java.util.Iterator; | |||
import java.util.List; | |||
import cn.afterturn.easypoi.handler.inter.IReadHandler; | |||
import org.apache.poi.openxml4j.opc.OPCPackage; | |||
import org.apache.poi.xssf.eventusermodel.XSSFReader; | |||
import org.apache.poi.xssf.model.SharedStringsTable; | |||
@@ -34,7 +35,6 @@ import cn.afterturn.easypoi.excel.entity.ImportParams; | |||
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; | |||
/** | |||
* 基于SAX Excel大数据读取,读取Excel 07版本,不支持图片读取 | |||
@@ -48,10 +48,10 @@ public class SaxReadExcel { | |||
private static final Logger LOGGER = LoggerFactory.getLogger(SaxReadExcel.class); | |||
public <T> List<T> readExcel(InputStream inputstream, Class<?> pojoClass, ImportParams params, | |||
ISaxRowRead rowRead, IExcelReadRowHandler hanlder) { | |||
IReadHandler hanlder) { | |||
try { | |||
OPCPackage opcPackage = OPCPackage.open(inputstream); | |||
return readExcel(opcPackage, pojoClass, params, rowRead, hanlder); | |||
return readExcel(opcPackage, pojoClass, params, null, hanlder); | |||
} catch (Exception e) { | |||
LOGGER.error(e.getMessage(), e); | |||
throw new ExcelImportException(e.getMessage()); | |||
@@ -59,7 +59,7 @@ public class SaxReadExcel { | |||
} | |||
private <T> List<T> readExcel(OPCPackage opcPackage, Class<?> pojoClass, ImportParams params, | |||
ISaxRowRead rowRead, IExcelReadRowHandler hanlder) { | |||
ISaxRowRead rowRead, IReadHandler hanlder) { | |||
try { | |||
XSSFReader xssfReader = new XSSFReader(opcPackage); | |||
SharedStringsTable sst = xssfReader.getSharedStringsTable(); | |||
@@ -22,6 +22,7 @@ import java.util.HashMap; | |||
import java.util.List; | |||
import java.util.Map; | |||
import cn.afterturn.easypoi.handler.inter.IReadHandler; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
@@ -36,7 +37,6 @@ import cn.afterturn.easypoi.excel.entity.sax.SaxReadCellEntity; | |||
import cn.afterturn.easypoi.excel.imports.CellValueService; | |||
import cn.afterturn.easypoi.excel.imports.base.ImportBaseService; | |||
import cn.afterturn.easypoi.exception.excel.ExcelImportException; | |||
import cn.afterturn.easypoi.handler.inter.IExcelReadRowHandler; | |||
import cn.afterturn.easypoi.util.PoiPublicUtil; | |||
import cn.afterturn.easypoi.util.PoiReflectorUtil; | |||
@@ -69,9 +69,9 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { | |||
private CellValueService cellValueServer; | |||
private IExcelReadRowHandler hanlder; | |||
private IReadHandler hanlder; | |||
public SaxRowRead(Class<?> pojoClass, ImportParams params, IExcelReadRowHandler hanlder) { | |||
public SaxRowRead(Class<?> pojoClass, ImportParams params, IReadHandler hanlder) { | |||
list = Lists.newArrayList(); | |||
this.params = params; | |||
this.pojoClass = pojoClass; | |||
@@ -21,11 +21,17 @@ package cn.afterturn.easypoi.handler.inter; | |||
* 2015年1月16日 下午8:06:26 | |||
* @param <T> | |||
*/ | |||
public interface IExcelReadRowHandler<T> { | |||
public interface IReadHandler<T> { | |||
/** | |||
* 处理解析对象 | |||
* @param t | |||
*/ | |||
public void handler(T t); | |||
/** | |||
* 处理完成之后的业务 | |||
*/ | |||
public void doAfterAll(); | |||
} |
@@ -4,7 +4,7 @@ | |||
<parent> | |||
<groupId>cn.afterturn</groupId> | |||
<artifactId>easypoi</artifactId> | |||
<version>4.0.0-SNAPSHOT</version> | |||
<version>4.0.0</version> | |||
</parent> | |||
<artifactId>easypoi-web</artifactId> | |||
<dependencies> | |||
@@ -3,7 +3,7 @@ | |||
<modelVersion>4.0.0</modelVersion> | |||
<groupId>cn.afterturn</groupId> | |||
<artifactId>easypoi</artifactId> | |||
<version>4.0.0-SNAPSHOT</version> | |||
<version>4.0.0</version> | |||
<packaging>pom</packaging> | |||
<name>easypoi</name> | |||
<modules> | |||
@@ -45,7 +45,7 @@ | |||
</organization> | |||
<properties> | |||
<sub.version>4.0.0-SNAPSHOT</sub.version> | |||
<sub.version>4.0.0</sub.version> | |||
<poi.version>4.0.0</poi.version> | |||
<xerces.version>2.9.1</xerces.version> | |||
<guava.version>16.0.1</guava.version> | |||