| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -9,6 +9,7 @@ import cn.afterturn.easypoi.exception.excel.ExcelExportException; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.exception.excel.enums.ExcelExportEnum; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import cn.afterturn.easypoi.util.PoiPublicUtil; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.commons.lang3.builder.ReflectionToStringBuilder; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.util.IOUtils; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.slf4j.Logger; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.slf4j.LoggerFactory; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -26,30 +27,33 @@ public class CsvExportService extends BaseExportService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final Logger LOGGER = LoggerFactory.getLogger(CsvExportService.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private CsvExportParams         params; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private List<ExcelExportEntity> excelParams; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private Writer                  writer; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 导出Csv类文件 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param outputStream 输出流 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param params       输出参数 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param pojoClass    输出类 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param dataSet      集合 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createCsv(OutputStream outputStream, CsvExportParams params, Class<?> pojoClass, Collection<?> dataSet) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public CsvExportService(OutputStream outputStream, CsvExportParams params, Class<?> pojoClass) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (LOGGER.isDebugEnabled()) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            LOGGER.debug("CSV export start ,class is {}", pojoClass); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (params == null || pojoClass == null || dataSet == null) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (params == null || pojoClass == null) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        try { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // 得到所有字段 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Field[] fields = PoiPublicUtil.getClassFields(pojoClass); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            String targetId = etarget == null ? null : etarget.value(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Field[]     fields   = PoiPublicUtil.getClassFields(pojoClass); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ExcelTarget etarget  = pojoClass.getAnnotation(ExcelTarget.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            String      targetId = etarget == null ? null : etarget.value(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            getAllExcelField(params.getExclusions(), targetId, fields, excelParams, pojoClass, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    null, null); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            createCsvOfList(outputStream, params, excelParams, dataSet); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            createCsvOfList(outputStream, params, excelParams); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } catch (Exception e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            LOGGER.error(e.getMessage(), e); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e.getCause()); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -60,13 +64,23 @@ public class CsvExportService extends BaseExportService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param outputStream 输出流 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param params       输出参数 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param excelParams  列参数 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param dataSet      集合参数 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void createCsvOfList(OutputStream outputStream, CsvExportParams params, List<ExcelExportEntity> excelParams, Collection<?> dataSet) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public CsvExportService(OutputStream outputStream, CsvExportParams params, List<ExcelExportEntity> excelParams) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        createCsvOfList(outputStream, params, excelParams); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param outputStream 输出流 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param params       输出参数 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param excelParams  列参数 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private CsvExportService createCsvOfList(OutputStream outputStream, CsvExportParams params, List<ExcelExportEntity> excelParams) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        try { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Writer writer = new BufferedWriter(new OutputStreamWriter(outputStream, params.getEncoding())); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            this.params = params; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            this.excelParams = excelParams; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            this.writer = writer; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            dataHandler = params.getDataHandler(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (dataHandler != null && dataHandler.getNeedHandlerFields() != null) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                needHandlerList = Arrays.asList(dataHandler.getNeedHandlerFields()); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -77,9 +91,32 @@ public class CsvExportService extends BaseExportService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (params.isCreateHeadRows()) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                writer.write(createHeaderRow(params, excelParams)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return this; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } catch (Exception e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            LOGGER.error(e.getMessage(), e); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e.getCause()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 导出Csv类文件 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param dataSet 集合 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public CsvExportService write(Collection<?> dataSet) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        try { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return writerData(dataSet); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } catch (Exception e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            LOGGER.error(e.getMessage(), e); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e.getCause()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private CsvExportService writerData(Collection<?> dataSet) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        try { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Iterator<?> iterator = dataSet.iterator(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            String line = null; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int i = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            String      line     = null; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int         i        = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            while (iterator.hasNext()) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                Object obj = iterator.next(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                line = createRow(excelParams, params, obj); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -90,7 +127,7 @@ public class CsvExportService extends BaseExportService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                i++; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            writer.flush(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            writer.close(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return this; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } catch (Exception e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            LOGGER.error(e.getMessage(), e); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e.getCause()); | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -151,4 +188,8 @@ public class CsvExportService extends BaseExportService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private String getLineMark() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return "\n"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    public void close() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        IOUtils.closeQuietly(this.writer); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} |