// Path: excel/src/main/java/com/bing/excel/converter/FieldValueConverter.java
// public interface FieldValueConverter extends ConverterMatcher {
// 	  OutValue toObject(Object source,ConverterHandler converterHandler);
// 	  Object fromString(String cell,ConverterHandler converterHandler,Type targetType);
// }
// 
// Path: excel/src/main/java/com/bing/excel/core/BingExcel.java
// public interface BingExcel {
// 
//   /**
//    * <p>
//    * Title: readFileToList<／p>
//    * <p>
//    * Description:读取excel 的第一个sheet页到list<／p>
//    *
//    * @param file excel对应的文件
//    * @param clazz 要转换类型的class对象
//    * @param startRowNum 从第几行开始读取
//    */
//   <T> BingExcelImpl.SheetVo<T> readFile(File file, Class<T> clazz, int startRowNum)
//       throws Exception;
// 
//   /**
//    * 根据condition条件读取相应的sheet到list对象
//    */
//   <T> BingExcelImpl.SheetVo<T> readFile(File file, ReaderCondition<T> condition) throws Exception;
// 
// 
//   /**
//    * 读取所condition 对应 sheet表格，到list
//    *
//    * @param conditions 每个表格对应的condition，注：对于返回的条数，取conditions中 endNum的最小值
//    * @return sheetVo的list对象，如果没有符合conditions的结果，返回empetyList对象
//    */
//   List<BingExcelImpl.SheetVo> readFileToList(File file, ReaderCondition[] conditions)
//       throws Exception;
// 
// 
//   <T> BingExcelImpl.SheetVo<T> readStream(InputStream stream, ReaderCondition<T> condition)
//       throws InvalidFormatException, IOException, SQLException, OpenXML4JException, SAXException;
// 
//   /**
//    * read sheet witch index equal 0
//    */
//   <T> BingExcelImpl.SheetVo<T> readStream(InputStream stream, Class<T> clazz, int startRowNum)
//       throws InvalidFormatException, IOException, SQLException, OpenXML4JException, SAXException;
// 
//   /**
//    * read sheets
//    */
//   List<BingExcelImpl.SheetVo> readStreamToList(InputStream stream, ReaderCondition[] condition)
//       throws InvalidFormatException, IOException, SQLException, OpenXML4JException, SAXException;
// 
//   /**
//    * 输出model集合到excel 文件。
//    *
//    * @param iterables 要输出到文件的集合对象，
//    * @param file 文件对象
//    */
//   void writeExcel(File file, Iterable... iterables) throws FileNotFoundException;
// 
//   void writeOldExcel(File file, Iterable... iterables) throws FileNotFoundException;
// 
//   /**
//    * 输出model集合到excel 文件。
//    *
//    * @param path 文件路径
//    */
//   void writeExcel(String path, Iterable... iterables);
// 
//   /**
//    * 写出xls格式的excel文件
//    */
//   void writeOldExcel(String path, Iterable... iterables);
// 
//   /**
//    * 写出xls格式的excel到输出流
//    */
//   void writeExcel(OutputStream stream, Iterable... iterables);
// 
//   void writeOldExcel(OutputStream stream, Iterable... iterables);
// 
//   void writeCSV(String path, Iterable iterable) throws IOException;
// 
//   void writeCSV(OutputStream os, Iterable iterable) throws IOException;
// 
//   /**
//    * 写出指定分隔符、指定是否写header的文件到输出流
//    *
//    * @param os 输出流
//    * @param iterable 带转换的对象
//    * @param delimiter 分隔符
//    * @param isWithHeader 是否写入header行
//    * @param isWithBOM 是否带BOM
//    */
//   void writeCSV(OutputStream os, Iterable iterable, char delimiter, boolean isWithHeader,
//       boolean isWithBOM) throws IOException;
// 
//   void modelName(Class<?> clazz, String alias);
// 
//   void fieldConverter(Class<?> clazz, String filedName, int index, String alias,
//       FieldValueConverter converter);
// 
//   /**
//    * 写出多sheet页的xls格式的excel文件暂时只支持xls格式,后续支持csv格式
//    * 
//    * @param <E>
//    * 
//    * @param path
//    * @param list
//    */
//   void writeSheetsExcel(String path, SheetExcel... sheetExcels);
// }


import com.bing.excel.converter.FieldValueConverter;
import com.bing.excel.core.BingExcel;
package com.bing.common;


/**
 * @author shizhongtao
 *
 * Description:
 */
public interface ExcleBuilder<T> {

	ExcleBuilder<BingExcel> addFieldConversionMapper(Class<?> clazz,
			String filedName, int index);

	ExcleBuilder<BingExcel> addFieldConversionMapper(Class<?> clazz,
			String filedName, int index, String alias);

	ExcleBuilder<BingExcel> addFieldConversionMapper(Class<?> clazz,
			String filedName, int index, String alias, FieldValueConverter converter);

	ExcleBuilder<BingExcel> addClassNameAlias(Class<?> clazz,
			String alias);

	/**
	 * 由build()方法代替
	 * @return
	 */
	@Deprecated
// Path: excel/src/main/java/com/bing/excel/converter/FieldValueConverter.java
// public interface FieldValueConverter extends ConverterMatcher {
// 	  OutValue toObject(Object source,ConverterHandler converterHandler);
// 	  Object fromString(String cell,ConverterHandler converterHandler,Type targetType);
// }
// 
// Path: excel/src/main/java/com/bing/excel/core/BingExcel.java
// public interface BingExcel {
// 
//   /**
//    * <p>
//    * Title: readFileToList<／p>
//    * <p>
//    * Description:读取excel 的第一个sheet页到list<／p>
//    *
//    * @param file excel对应的文件
//    * @param clazz 要转换类型的class对象
//    * @param startRowNum 从第几行开始读取
//    */
//   <T> BingExcelImpl.SheetVo<T> readFile(File file, Class<T> clazz, int startRowNum)
//       throws Exception;
// 
//   /**
//    * 根据condition条件读取相应的sheet到list对象
//    */
//   <T> BingExcelImpl.SheetVo<T> readFile(File file, ReaderCondition<T> condition) throws Exception;
// 
// 
//   /**
//    * 读取所condition 对应 sheet表格，到list
//    *
//    * @param conditions 每个表格对应的condition，注：对于返回的条数，取conditions中 endNum的最小值
//    * @return sheetVo的list对象，如果没有符合conditions的结果，返回empetyList对象
//    */
//   List<BingExcelImpl.SheetVo> readFileToList(File file, ReaderCondition[] conditions)
//       throws Exception;
// 
// 
//   <T> BingExcelImpl.SheetVo<T> readStream(InputStream stream, ReaderCondition<T> condition)
//       throws InvalidFormatException, IOException, SQLException, OpenXML4JException, SAXException;
// 
//   /**
//    * read sheet witch index equal 0
//    */
//   <T> BingExcelImpl.SheetVo<T> readStream(InputStream stream, Class<T> clazz, int startRowNum)
//       throws InvalidFormatException, IOException, SQLException, OpenXML4JException, SAXException;
// 
//   /**
//    * read sheets
//    */
//   List<BingExcelImpl.SheetVo> readStreamToList(InputStream stream, ReaderCondition[] condition)
//       throws InvalidFormatException, IOException, SQLException, OpenXML4JException, SAXException;
// 
//   /**
//    * 输出model集合到excel 文件。
//    *
//    * @param iterables 要输出到文件的集合对象，
//    * @param file 文件对象
//    */
//   void writeExcel(File file, Iterable... iterables) throws FileNotFoundException;
// 
//   void writeOldExcel(File file, Iterable... iterables) throws FileNotFoundException;
// 
//   /**
//    * 输出model集合到excel 文件。
//    *
//    * @param path 文件路径
//    */
//   void writeExcel(String path, Iterable... iterables);
// 
//   /**
//    * 写出xls格式的excel文件
//    */
//   void writeOldExcel(String path, Iterable... iterables);
// 
//   /**
//    * 写出xls格式的excel到输出流
//    */
//   void writeExcel(OutputStream stream, Iterable... iterables);
// 
//   void writeOldExcel(OutputStream stream, Iterable... iterables);
// 
//   void writeCSV(String path, Iterable iterable) throws IOException;
// 
//   void writeCSV(OutputStream os, Iterable iterable) throws IOException;
// 
//   /**
//    * 写出指定分隔符、指定是否写header的文件到输出流
//    *
//    * @param os 输出流
//    * @param iterable 带转换的对象
//    * @param delimiter 分隔符
//    * @param isWithHeader 是否写入header行
//    * @param isWithBOM 是否带BOM
//    */
//   void writeCSV(OutputStream os, Iterable iterable, char delimiter, boolean isWithHeader,
//       boolean isWithBOM) throws IOException;
// 
//   void modelName(Class<?> clazz, String alias);
// 
//   void fieldConverter(Class<?> clazz, String filedName, int index, String alias,
//       FieldValueConverter converter);
// 
//   /**
//    * 写出多sheet页的xls格式的excel文件暂时只支持xls格式,后续支持csv格式
//    * 
//    * @param <E>
//    * 
//    * @param path
//    * @param list
//    */
//   void writeSheetsExcel(String path, SheetExcel... sheetExcels);
// }


// Path: excel/src/main/java/com/bing/common/ExcleBuilder.java
import com.bing.excel.converter.FieldValueConverter;
import com.bing.excel.core.BingExcel;

package com.bing.common;


/**
 * @author shizhongtao
 *
 * Description:
 */
public interface ExcleBuilder<T> {

	ExcleBuilder<BingExcel> addFieldConversionMapper(Class<?> clazz,
			String filedName, int index);

	ExcleBuilder<BingExcel> addFieldConversionMapper(Class<?> clazz,
			String filedName, int index, String alias);

	ExcleBuilder<BingExcel> addFieldConversionMapper(Class<?> clazz,
			String filedName, int index, String alias, FieldValueConverter converter);

	ExcleBuilder<BingExcel> addClassNameAlias(Class<?> clazz,
			String alias);

	/**
	 * 由build()方法代替
	 * @return
	 */
	@Deprecated
	T builder();