diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtil.java index 77a8c78..c72b73e 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtil.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtil.java @@ -11,6 +11,7 @@ import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; import org.jeecgframework.poi.excel.imports.ExcelImportServer; import org.jeecgframework.poi.excel.imports.sax.SaxReadExcel; import org.jeecgframework.poi.excel.imports.sax.parse.ISaxRowRead; +import org.jeecgframework.poi.handler.inter.IExcelReadRowHanlder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -108,25 +109,11 @@ public class ExcelImportUtil { return null; } - /** - * Excel 通过SAX解析方法,适合大数据导入,不支持图片 - * 导入 数据源本地文件,不返回校验结果 导入 字 段类型 Integer,Long,Double,Date,String,Boolean - * - * @param file - * @param pojoClass - * @param params - * @return - * @throws Exception - */ - public static List importExcelBySax(File file, Class pojoClass, ImportParams params) { - return new SaxReadExcel().readExcel(file, pojoClass, params, null); - } - /** * Excel 通过SAX解析方法,适合大数据导入,不支持图片 * 导入 数据源IO流,不返回校验结果 导入 字段类型 Integer,Long,Double,Date,String,Boolean * - * @param file + * @param inputstream * @param pojoClass * @param params * @return @@ -134,7 +121,7 @@ public class ExcelImportUtil { */ public static List importExcelBySax(InputStream inputstream, Class pojoClass, ImportParams params) { - return new SaxReadExcel().readExcel(inputstream, pojoClass, params, null); + return new SaxReadExcel().readExcel(inputstream, pojoClass, params, null, null); } /** @@ -146,8 +133,10 @@ public class ExcelImportUtil { * @return * @throws Exception */ - public static List importExcelBySax(File file, ISaxRowRead rowRead) { - return new SaxReadExcel().readExcel(file, null, null, rowRead); + @SuppressWarnings("rawtypes") + public static void importExcelBySax(InputStream inputstream, Class pojoClass, + ImportParams params, IExcelReadRowHanlder hanlder) { + new SaxReadExcel().readExcel(inputstream, pojoClass, params, null, hanlder); } /** @@ -160,7 +149,7 @@ public class ExcelImportUtil { * @throws Exception */ public static List importExcelBySax(InputStream inputstream, ISaxRowRead rowRead) { - return new SaxReadExcel().readExcel(inputstream, null, null, rowRead); + return new SaxReadExcel().readExcel(inputstream, null, null, rowRead, null); } } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java index 0223ce5..93ec2d2 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java @@ -5,9 +5,6 @@ import java.io.FileOutputStream; import java.io.InputStream; import java.io.PushbackInputStream; import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -30,13 +27,10 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.ExcelTarget; -import org.jeecgframework.poi.excel.annotation.ExcelVerify; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; import org.jeecgframework.poi.excel.entity.params.ExcelImportEntity; -import org.jeecgframework.poi.excel.entity.params.ExcelVerifyEntity; import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; import org.jeecgframework.poi.excel.entity.result.ExcelVerifyHanlderResult; import org.jeecgframework.poi.excel.imports.base.ImportBaseService; diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/SaxReadExcel.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/SaxReadExcel.java index 31682d0..1b3fc12 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/SaxReadExcel.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/SaxReadExcel.java @@ -1,6 +1,5 @@ package org.jeecgframework.poi.excel.imports.sax; -import java.io.File; import java.io.InputStream; import java.util.Iterator; import java.util.List; @@ -12,6 +11,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.imports.sax.parse.ISaxRowRead; import org.jeecgframework.poi.excel.imports.sax.parse.SaxRowRead; import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.jeecgframework.poi.handler.inter.IExcelReadRowHanlder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.ContentHandler; @@ -26,26 +26,16 @@ import org.xml.sax.helpers.XMLReaderFactory; * @date 2014年12月29日 下午9:41:38 * @version 1.0 */ +@SuppressWarnings("rawtypes") public class SaxReadExcel { private static final Logger LOGGER = LoggerFactory.getLogger(SaxReadExcel.class); public List readExcel(InputStream inputstream, Class pojoClass, ImportParams params, - ISaxRowRead rowRead) { + ISaxRowRead rowRead, IExcelReadRowHanlder hanlder) { try { OPCPackage opcPackage = OPCPackage.open(inputstream); - return readExcel(opcPackage, pojoClass, params, rowRead); - } catch (Exception e) { - LOGGER.error(e.getMessage(), e); - throw new ExcelImportException(e.getMessage()); - } - } - - public List readExcel(File file, Class pojoClass, ImportParams params, - ISaxRowRead rowRead) { - try { - OPCPackage opcPackage = OPCPackage.open(file); - return readExcel(opcPackage, pojoClass, params, rowRead); + return readExcel(opcPackage, pojoClass, params, rowRead, hanlder); } catch (Exception e) { LOGGER.error(e.getMessage(), e); throw new ExcelImportException(e.getMessage()); @@ -53,12 +43,12 @@ public class SaxReadExcel { } private List readExcel(OPCPackage opcPackage, Class pojoClass, ImportParams params, - ISaxRowRead rowRead) { + ISaxRowRead rowRead, IExcelReadRowHanlder hanlder) { try { XSSFReader xssfReader = new XSSFReader(opcPackage); SharedStringsTable sst = xssfReader.getSharedStringsTable(); if (rowRead == null) { - rowRead = new SaxRowRead(pojoClass, params); + rowRead = new SaxRowRead(pojoClass, params, hanlder); } XMLReader parser = fetchSheetParser(sst, rowRead); Iterator sheets = xssfReader.getSheetsData(); diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/parse/SaxRowRead.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/parse/SaxRowRead.java index 5c15c88..ab60d19 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/parse/SaxRowRead.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/sax/parse/SaxRowRead.java @@ -16,6 +16,7 @@ import org.jeecgframework.poi.excel.entity.sax.SaxReadCellEntity; import org.jeecgframework.poi.excel.imports.CellValueServer; import org.jeecgframework.poi.excel.imports.base.ImportBaseService; import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.jeecgframework.poi.handler.inter.IExcelReadRowHanlder; import org.jeecgframework.poi.util.POIPublicUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,11 +53,14 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { private CellValueServer cellValueServer; - public SaxRowRead(Class pojoClass, ImportParams params) { + private IExcelReadRowHanlder hanlder; + + public SaxRowRead(Class pojoClass, ImportParams params, IExcelReadRowHanlder hanlder) { list = Lists.newArrayList(); this.params = params; this.pojoClass = pojoClass; cellValueServer = new CellValueServer(); + this.hanlder = hanlder; initParams(pojoClass, params); } @@ -115,6 +119,9 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { addListContinue(object, param, datas, titlemap, targetId, params); } } else { + if (object != null && hanlder != null) { + hanlder.hanlder(object); + } object = POIPublicUtil.createObject(pojoClass, targetId); SaxReadCellEntity entity; for (int i = 0, le = datas.size(); i < le; i++) { @@ -127,7 +134,9 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { for (ExcelCollectionParams param : excelCollection) { addListContinue(object, param, datas, titlemap, targetId, params); } - list.add(object); + if (hanlder == null) { + list.add(object); + } } } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelReadRowHanlder.java b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelReadRowHanlder.java new file mode 100644 index 0000000..cb64216 --- /dev/null +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelReadRowHanlder.java @@ -0,0 +1,16 @@ +package org.jeecgframework.poi.handler.inter; + +/** + * 接口自定义处理类 + * @author JueYue + * @date 2015年1月16日 下午8:06:26 + * @param + */ +public interface IExcelReadRowHanlder { + /** + * 处理解析对象 + * @param t + */ + public void hanlder(T t); + +} diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtilTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtilTest.java index f4b3359..7675824 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtilTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelImportUtilTest.java @@ -1,6 +1,8 @@ package org.jeecgframework.poi.excel; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.util.Date; import java.util.List; @@ -16,17 +18,22 @@ public class ExcelImportUtilTest { @Test public void test() { - ImportParams params = new ImportParams(); - params.setTitleRows(1); - long start = new Date().getTime(); - List list = ExcelImportUtil.importExcelBySax(new File("d:/tt.xlsx"), - StatisticEntity.class, params); -// List list = ExcelImportUtil.importExcelBySax(new File("d:/tt.xlsx"), -// StatisticEntity.class, params); - /*for (int i = 0; i < list.size(); i++) { - System.out.println(ReflectionToStringBuilder.toString(list.get(i))); - }*/ - System.out.println(list.size() + "-----" + (new Date().getTime() - start)); + try { + ImportParams params = new ImportParams(); + params.setTitleRows(1); + long start = new Date().getTime(); + List list = ExcelImportUtil.importExcelBySax(new FileInputStream( + new File("d:/tt.xlsx")), StatisticEntity.class, params); + // List list = ExcelImportUtil.importExcelBySax(new File("d:/tt.xlsx"), + // StatisticEntity.class, params); + /*for (int i = 0; i < list.size(); i++) { + System.out.println(ReflectionToStringBuilder.toString(list.get(i))); + }*/ + System.out.println(list.size() + "-----" + (new Date().getTime() - start)); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } // @Test diff --git a/pom.xml b/pom.xml index e2b8caa..ae9ea88 100644 --- a/pom.xml +++ b/pom.xml @@ -161,4 +161,15 @@ + + + postaop-common-release + http://192.168.1.99:8081/nexus/content/repositories/postaop-common-release/ + + + postaop-common-snapshot + http://192.168.1.99:8081/nexus/content/repositories/postaop-common-snapshot/ + + + \ No newline at end of file