1515import java .io .IOException ;
1616import java .io .OutputStream ;
1717import java .lang .reflect .Field ;
18+ import java .util .Collections ;
1819import java .util .List ;
1920
2021import static com .lannstark .utils .SuperClassReflectionUtils .getField ;
2122
22- public abstract class SXSSFExcelFile <T > implements ExcelFile {
23+ public abstract class SXSSFExcelFile <T > implements ExcelFile < T > {
2324
2425 protected static final SpreadsheetVersion supplyExcelVersion = SpreadsheetVersion .EXCEL2007 ;
2526
@@ -28,28 +29,37 @@ public abstract class SXSSFExcelFile<T> implements ExcelFile {
2829 protected ExcelRenderResource resource ;
2930
3031 /**
31- * OneSheetExcelFile
32+ *SXSSFExcelFile
33+ * @param type Class type to be rendered
34+ */
35+ public SXSSFExcelFile (Class <T > type ) {
36+ this (Collections .emptyList (), type , new DefaultDataFormatDecider ());
37+ }
38+
39+ /**
40+ * SXSSFExcelFile
3241 * @param data List Data to render excel file. data should have at least one @ExcelColumn on fields
3342 * @param type Class type to be rendered
3443 */
3544 public SXSSFExcelFile (List <T > data , Class <T > type ) {
36- this .wb = new SXSSFWorkbook ();
37- this .resource = ExcelRenderResourceFactory .prepareRenderResource (type , wb , new DefaultDataFormatDecider ());
38- renderExcel (data );
45+ this (data , type , new DefaultDataFormatDecider ());
3946 }
4047
4148 /**
42- * OneSheetExcelFile
49+ * SXSSFExcelFile
4350 * @param data List Data to render excel file. data should have at least one @ExcelColumn on fields
4451 * @param type Class type to be rendered
4552 * @param dataFormatDecider Custom DataFormatDecider
4653 */
4754 public SXSSFExcelFile (List <T > data , Class <T > type , DataFormatDecider dataFormatDecider ) {
55+ validateData (data );
4856 this .wb = new SXSSFWorkbook ();
4957 this .resource = ExcelRenderResourceFactory .prepareRenderResource (type , wb , dataFormatDecider );
5058 renderExcel (data );
5159 }
5260
61+ protected void validateData (List <T > data ) { }
62+
5363 protected abstract void renderExcel (List <T > data );
5464
5565 protected void renderHeadersWithNewSheet (Sheet sheet , int rowIndex , int columnStartIndex ) {
@@ -62,15 +72,15 @@ protected void renderHeadersWithNewSheet(Sheet sheet, int rowIndex, int columnSt
6272 }
6373 }
6474
65- protected void renderContent (Object data , int rowIndex , int columnStartIndex ) {
75+ protected void renderBody (Object data , int rowIndex , int columnStartIndex ) {
6676 Row row = sheet .createRow (rowIndex );
6777 int columnIndex = columnStartIndex ;
6878 for (String dataFieldName : resource .getDataFieldNames ()) {
6979 Cell cell = row .createCell (columnIndex ++);
7080 try {
7181 Field field = getField (data .getClass (), (dataFieldName ));
7282 field .setAccessible (true );
73- cell .setCellStyle (resource .getCellStyle (dataFieldName , ExcelRenderLocation .CONTENTS ));
83+ cell .setCellStyle (resource .getCellStyle (dataFieldName , ExcelRenderLocation .BODY ));
7484 Object cellValue = field .get (data );
7585 renderCellValue (cell , cellValue );
7686 } catch (Exception e ) {
0 commit comments