package Ġcom . on eli ang . k tx . util . j xl Ċ Ċ import Ġcom . on eli ang . k tx . Constants Ċ import Ġcom . on eli ang . k tx . util . common . Object Util Ċ import Ġcom . on eli ang . k tx . util . common . null To Blank Ċ import Ġcom . on eli ang . k tx . util . common . toMap With Index Ċ import Ġcom . on eli ang . k tx . util . file . create File Include Directory Ċ import Ġj xl . Cell Ċ import Ġj xl . Sheet Ċ import Ġj xl . Workbook Ċ import Ġj xl . write . Label Ċ import Ġj xl . write . Writable Cell Ċ import Ġj xl . write . Writable Sheet Ċ import Ġj xl . write . Writable Workbook Ċ import Ġjava . io . File Ċ import Ġkotlin . reflect . K Class Ċ Ċ inline Ġfun ĠWrit able Workbook . use ( block : Ġ( Writable Workbook ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( this ) ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . write () ĊĠĠĠĠĠĠĠ Ġthis . close () ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠJ xl Util Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠDEFAULT _ J XL _ PROCESS OR Ġ= ĠDefault J xl Processor () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcopy Ġexcel ĊĠĠĠĠ Ġ* Ġ@ param Ġexcel File ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Excel File ĊĠĠĠĠ Ġ* Ġ@ param Ġj xl Processor ĊĠĠĠĠ Ġ* Ġ@ param Ġinstance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġcopy Excel ( excel File : ĠString , Ġnew Excel File : ĠString , Ġinstance : ĠT , Ġj xl Processor : ĠJ xl Processor Ġ= ĠDEFAULT _ J XL _ PROCESS OR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġworkbook Ġ= ĠWork book . get Workbook ( File ( excel File )) ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( new Excel File ), Ġworkbook ) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsheets Ġ= Ġwritable Workbook . sheets ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( sheet Ġin Ġsheets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġsheet . columns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcolumns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcells Ġ= Ġsheet . getColumn ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cell Ġin Ġcells ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj xl Processor . copy Process ( cell , Ġinstance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġsimple Ġexcel ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġk Class ĊĠĠĠĠ Ġ* Ġ@ param Ġj xl Mapping Bean ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Row Offset ĊĠĠĠĠ Ġ* Ġ@ param Ġj xl Processor ĊĠĠĠĠ Ġ* Ġ@ return ĠRead Result < T > ĊĠĠĠ Ġ</ T ></ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġread Simple Excel ( full Filename : ĠString , Ġk Class : ĠK Class < T >, Ġj xl Mapping Bean : ĠJ xl Mapping Bean , Ġheader RowIndex : ĠInt Ġ= Ġ- 1 , Ġdata Row Offset : ĠInt Ġ= Ġ 0 , Ġj xl Processor : ĠJ xl Processor Ġ= ĠDEFAULT _ J XL _ PROCESS OR ): ĠRead Result < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġworkbook Ġ= ĠWork book . get Workbook ( File ( full Filename )) ĊĠĠĠĠĠĠĠ Ġreturn Ġread Simple Excel ( workbook , Ġk Class , Ġj xl Mapping Bean , Ġheader RowIndex , Ġdata Row Offset , Ġj xl Processor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġsimple Ġexcel ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġworkbook ĊĠĠĠĠ Ġ* Ġ@ param Ġk Class ĊĠĠĠĠ Ġ* Ġ@ param Ġj xl Mapping Bean ĊĠĠĠĠ Ġ* Ġ@ param Ġheader RowIndex ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Row Offset ĊĠĠĠĠ Ġ* Ġ@ param Ġj xl Processor ĊĠĠĠĠ Ġ* Ġ@ return ĠRead Result < T > ĊĠĠĠ Ġ</ T ></ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġread Simple Excel ( workbook : ĠWork book , Ġk Class : ĠK Class < T >, Ġj xl Mapping Bean : ĠJ xl Mapping Bean , Ġheader RowIndex : ĠInt Ġ= Ġ- 1 , Ġdata Row Offset : ĠInt Ġ= Ġ 0 , Ġj xl Processor : ĠJ xl Processor Ġ= ĠDEFAULT _ J XL _ PROCESS OR ): ĠRead Result < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread Simple Excel For DataRow ( workbook , Ġheader RowIndex , Ġdata Row Offset ) Ġ{ Ġsheet , ĠrowIndex , Ġexist Header , Ġheader Index Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Row Instance ( sheet , ĠrowIndex , Ġk Class , Ġexist Header , Ġheader Index Map , Ġj xl Mapping Bean , Ġj xl Processor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġsimple Ġexcel ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġworkbook ĊĠĠĠĠ Ġ* Ġ@ param Ġheader RowIndex ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Row Offset ĊĠĠĠĠ Ġ* Ġ@ return ĠRead Result < Map < String , ĠString >> ĊĠĠĠ Ġ</ T ></ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġread Simple Excel ( workbook : ĠWork book , Ġheader RowIndex : ĠInt Ġ= Ġ- 1 , Ġdata Row Offset : ĠInt Ġ= Ġ 0 ): ĠRead Result < Map < String , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread Simple Excel For DataRow ( workbook , Ġheader RowIndex , Ġdata Row Offset ) Ġ{ Ġsheet , ĠrowIndex , Ġexist Header , Ġheader Index Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Row Data ( sheet , ĠrowIndex , Ġexist Header , Ġheader Index Map , Ġ{ Ġ_, Ġcell , Ġ_, Ġ_ Ġ-> Ġcell . contents . null To Blank () Ġ}) Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġsimple Ġexcel ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġworkbook ĊĠĠĠĠ Ġ* Ġ@ param Ġheader RowIndex ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Row Offset ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue Transform ĊĠĠĠĠ Ġ* Ġ@ return ĠRead Result < Map < String , ĠV >> ĊĠĠĠ Ġ</ T ></ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< V Ġ: ĠAny > Ġread Simple Excel ( workbook : ĠWork book , Ġheader RowIndex : ĠInt Ġ= Ġ- 1 , Ġdata Row Offset : ĠInt Ġ= Ġ 0 , Ġvalue Transform : Ġ( header : ĠString , Ġcell : ĠCell , ĠrowIndex : ĠInt , ĠcolumnIndex : ĠInt ) Ġ-> ĠV ): ĠRead Result < Map < String , ĠV >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread Simple Excel For DataRow ( workbook , Ġheader RowIndex , Ġdata Row Offset ) Ġ{ Ġsheet , ĠrowIndex , Ġexist Header , Ġheader Index Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Row Data ( sheet , ĠrowIndex , Ġexist Header , Ġheader Index Map , Ġvalue Transform ) Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġsimple Ġexcel ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġworkbook ĊĠĠĠĠ Ġ* Ġ@ param Ġheader RowIndex ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Row Offset ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue Transform ĊĠĠĠĠ Ġ* Ġ@ param Ġrow Data Transform ĊĠĠĠĠ Ġ* Ġ@ return ĠRead Result < T > ĊĠĠĠ Ġ</ T ></ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< V Ġ: ĠAny , ĠT Ġ: ĠAny > Ġread Simple Excel ( workbook : ĠWork book , Ġheader RowIndex : ĠInt Ġ= Ġ- 1 , Ġdata Row Offset : ĠInt Ġ= Ġ 0 , Ġvalue Transform : Ġ( header : ĠString , Ġcell : ĠCell , ĠrowIndex : ĠInt , ĠcolumnIndex : ĠInt ) Ġ-> ĠV , Ġrow Data Transform : Ġ( data Map : ĠMap < String , ĠV >) Ġ-> ĠT ): ĠRead Result < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread Simple Excel For DataRow ( workbook , Ġheader RowIndex , Ġdata Row Offset ) Ġ{ Ġsheet , ĠrowIndex , Ġexist Header , Ġheader Index Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Row Data ( sheet , ĠrowIndex , Ġexist Header , Ġheader Index Map , Ġvalue Transform , Ġrow Data Transform ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġsimple Ġexcel Ġfor Ġdata Ġrow ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġworkbook ĊĠĠĠĠ Ġ* Ġ@ param Ġheader RowIndex ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Row Offset ĊĠĠĠĠ Ġ* Ġ@ param Ġread DataRow ĊĠĠĠĠ Ġ* Ġ@ return ĠRead Result < T > ĊĠĠĠ Ġ</ T ></ T > Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġread Simple Excel For DataRow ( workbook : ĠWork book , Ġheader RowIndex : ĠInt Ġ= Ġ- 1 , Ġdata Row Offset : ĠInt Ġ= Ġ 0 , Ġread DataRow : Ġ( sheet : ĠSheet , ĠrowIndex : ĠInt , Ġexist Header : ĠBoolean , Ġheader Index Map : ĠMap < String , ĠInt >) Ġ-> ĠT ): ĠRead Result < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < T >() ĊĠĠĠĠĠĠĠ Ġval Ġsheets Ġ= Ġworkbook . sheets ĊĠĠĠĠĠĠĠ Ġval Ġsheet Ġ= Ġ( if Ġ( sheets . isNotEmpty ()) Ġsheets [ 0 ] Ġelse Ġnull ) Ġ?: Ġreturn ĠRead Result ( data List Ġ= Ġlist ) ĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġsheet . rows ĊĠĠĠĠĠĠĠ Ġif Ġ( rows Ġ< Ġheader RowIndex Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRead Result ( data List Ġ= Ġlist ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// find Ġheader Ġmaybe Ġhas Ġno Ġheader ĊĠĠĠĠĠĠĠ Ġvar Ġheader Index Map Ġ= Ġempty Map < String , ĠInt >() ĊĠĠĠĠĠĠĠ Ġif Ġ( header RowIndex Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Cell Array Ġ= Ġsheet . getRow ( header RowIndex ) Ġ?: Ġempty Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Index Map Ġ= Ġheader Cell Array . toMap With Index Ġ{ Ġindex , Ġcell Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell . contents . null To Blank () Ġto Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexist Header Ġ= Ġheader Index Map . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdata Row Offset Ġuntil Ġrows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġheader RowIndex ) Ġ{// header Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġread DataRow ( sheet , Ġi , Ġexist Header , Ġheader Index Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= Ġinstance ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠRead Result ( header Index Map , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcreate Ġrow Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġ< V Ġ: ĠAny , ĠT Ġ: ĠAny > Ġcreate Row Data ( sheet : ĠSheet , ĠrowIndex : ĠInt , Ġexist Header : ĠBoolean , Ġheader Index Map : ĠMap < String , ĠInt >, Ġvalue Transform : Ġ( header : ĠString , Ġcell : ĠCell , ĠrowIndex : ĠInt , ĠcolumnIndex : ĠInt ) Ġ-> ĠV , Ġrow Data Transform : Ġ( data Map : ĠMap < String , ĠV >) Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠV >() ĊĠĠĠĠĠĠĠ Ġif Ġ( exist Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Index Map . forEach Ġ{ Ġ( header , ĠcolumnIndex ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= Ġsheet . getCell ( column Index , ĠrowIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ header ] Ġ= Ġvalue Transform ( header , Ġcell , ĠrowIndex , ĠcolumnIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġsheet . columns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( column Index Ġin Ġ 0 Ġuntil Ġcolumns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= Ġsheet . getCell ( column Index , ĠrowIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠcolumnIndex . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ header ] Ġ= Ġvalue Transform ( header , Ġcell , ĠrowIndex , ĠcolumnIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrow Data Transform ( map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcreate Ġrow Ġinstance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠAny > Ġcreate Row Instance ( sheet : ĠSheet , ĠrowIndex : ĠInt , Ġk Class : ĠK Class < T >, Ġexist Header : ĠBoolean , Ġheader Index Map : ĠMap < String , ĠInt >, Ġj xl Mapping Bean : ĠJ xl Mapping Bean , Ġj xl Processor : ĠJ xl Processor Ġ= ĠDEFAULT _ J XL _ PROCESS OR ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġk Class . java . newInstance () ĊĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġk Class . java . methods ĊĠĠĠĠĠĠĠ Ġfor Ġ( method Ġin Ġmethods ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġmethod . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠfieldName Ġ= ĠConstants . String . BLANK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( methodName . startsWith ( Constants . Method . PREFIX _ SET )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfieldName Ġ= ĠObject Util . methodName To FieldName ( Constants . Method . PREFIX _ SET , ĠmethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fieldName . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcolumnIndex Ġ= Ġif Ġ( exist Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġj xl Mapping Bean . getHeader ( fieldName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Index Map [ header ] Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj xl Mapping Bean . getIndex ( fieldName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( column Index Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= Ġsheet . getCell ( column Index , ĠrowIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= Ġmethod . parameter Types ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( classes . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġj xl Processor . read Process ( classes [ 0 ]. kotlin , Ġcell ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . invoke ( instance , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġmulti Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġwrite Simple Excel ( full Filename : ĠString , Ġwrite Option Array : ĠArray < Write Option >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel ( it , Ġwrite Option Array ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġmulti Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġwrite Simple Excel ( writable Workbook : ĠWrit able Workbook , Ġwrite Option Array : ĠArray < Write Option >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Option Array . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwritable Sheet Ġ= Ġget OrCreate Sheet ( writable Workbook , Ġit . sheet Name , Ġit . sheet Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrow Ġ= Ġit . start Row ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . header Array . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( column , Ġheader ) Ġin Ġit . header Array . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= ĠLabel ( column , Ġrow , Ġheader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwritable Sheet . add Cell ( cell ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . write Data Rows ( writable Sheet , Ġrow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġdefault Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġwrite Simple Excel ( full Filename : ĠString , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġwrite Data Rows : Ġ( writable Sheet : ĠWrit able Sheet , Ġcurrent Row : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel ( writable Workbook , Ġ" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġwrite Data Rows ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġdefault Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġwrite Simple Excel ( writable Workbook : ĠWrit able Workbook , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġwrite Data Rows : Ġ( writable Sheet : ĠWrit able Sheet , Ġcurrent Row : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel ( writable Workbook , Ġ" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġwrite Data Rows ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġwrite Simple Excel ( full Filename : ĠString , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġwrite Data Rows : Ġ( writable Sheet : ĠWrit able Sheet , Ġcurrent Row : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel ( it , Ġsheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġwrite Data Rows ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġwrite Simple Excel ( writable Workbook : ĠWrit able Workbook , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġwrite Data Rows : Ġ( writable Sheet : ĠWrit able Sheet , Ġcurrent Row : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Sheet Ġ= Ġget OrCreate Sheet ( writable Workbook , Ġsheet Name , Ġsheet Index ) ĊĠĠĠĠĠĠĠ Ġvar Ġrow Ġ= Ġstart Row ĊĠĠĠĠĠĠĠ Ġif Ġ( header Array . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( column , Ġheader ) Ġin Ġheader Array . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= ĠLabel ( column , Ġrow , Ġheader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwritable Sheet . add Cell ( cell ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite Data Rows ( writable Sheet , Ġrow ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġmulti Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Array ( full Filename : ĠString , Ġwrite Option For Array Array : ĠArray < Write Option For Array < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( it , Ġwrite Option For Array Array ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġmulti Ġsheet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Array ( writable Workbook : ĠWrit able Workbook , Ġwrite Option For Array Array : ĠArray < Write Option For Array < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Option For Array Array . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel ( writable Workbook , Ġit . sheet Name , Ġit . sheet Index , Ġit . start Row , Ġit . header Array ) Ġ{ Ġwritable Sheet , Ġcurrent Row Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrow Ġ= Ġcurrent Row ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( array Ġin Ġit . iterable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray . forEach Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransform Value Ġ= Ġit . transform ( index , Ġrow , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwritable Cell Ġ= ĠDEFAULT _ J XL _ PROCESS OR . write Process ( index , Ġrow , ĠConstants . String . BLANK , Ġtransform Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwritable Sheet . add Cell ( writable Cell ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Array ( full Filename : ĠString , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( writable Workbook , ĠarrayOf ( Write Option For Array (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Array ( writable Workbook : ĠWrit able Workbook , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( writable Workbook , ĠarrayOf ( Write Option For Array (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Array ( full Filename : ĠString , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( writable Workbook , ĠarrayOf ( Write Option For Array (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Array ( writable Workbook : ĠWrit able Workbook , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( writable Workbook , ĠarrayOf ( Write Option For Array (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Array ( full Filename : ĠString , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( it , ĠarrayOf ( Write Option For Array ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Array ( writable Workbook : ĠWrit able Workbook , Ġsheet Name : ĠString , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( writable Workbook , ĠarrayOf ( Write Option For Array ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Array ( full Filename : ĠString , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( it , ĠarrayOf ( Write Option For Array ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġarray , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Array ( writable Workbook : ĠWrit able Workbook , Ġsheet Name : ĠString , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Array < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Array ( writable Workbook , ĠarrayOf ( Write Option For Array ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġmulti Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġwrite Option For Iterable Array ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Iterable ( full Filename : ĠString , Ġwrite Option For Iterable Array : ĠArray < Write Option For Iterable < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( it , Ġwrite Option For Iterable Array ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġmulti Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġwrite Option For Iterable Array ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Iterable ( writable Workbook : ĠWrit able Workbook , Ġwrite Option For Iterable Array : ĠArray < Write Option For Iterable < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Option For Iterable Array . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel ( writable Workbook , Ġit . sheet Name , Ġit . sheet Index , Ġit . start Row , Ġit . header Array ) Ġ{ Ġwritable Sheet , Ġcurrent Row Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrow Ġ= Ġcurrent Row ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( inner Iterable Ġin Ġit . iterable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinner Iterable . forEach Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransform Value Ġ= Ġit . transform ( index , Ġrow , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwritable Cell Ġ= ĠDEFAULT _ J XL _ PROCESS OR . write Process ( index , Ġrow , ĠConstants . String . BLANK , Ġtransform Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwritable Sheet . add Cell ( writable Cell ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Iterable ( full Filename : ĠString , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Iterable ( writable Workbook : ĠWrit able Workbook , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Iterable ( full Filename : ĠString , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġdefault Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Iterable ( writable Workbook : ĠWrit able Workbook , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable (" sheet ", Ġ 0 , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Iterable ( full Filename : ĠString , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġwrite Simple Excel For Iterable ( writable Workbook : ĠWrit able Workbook , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable ) Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Iterable ( full Filename : ĠString , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel Ġfor Ġiterable , Ġfor Ġone Ġsheet ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġwritable Workbook ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Name ĊĠĠĠĠ Ġ* Ġ@ param Ġsheet Index ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Row ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġtransform ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġfun Ġ< T , ĠR > Ġwrite Simple Excel For Iterable ( writable Workbook : ĠWrit able Workbook , Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , Ġsheet Index : ĠInt , Ġstart Row : ĠInt Ġ= Ġ 0 , Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < Iterable < T >>, Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Simple Excel For Iterable ( writable Workbook , ĠarrayOf ( Write Option For Iterable ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array , Ġiterable , Ġtransform ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġsimple Ġexcel ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ param Ġheader Array ĊĠĠĠĠ Ġ* Ġ@ param Ġiterable ĊĠĠĠĠ Ġ* Ġ@ param Ġj xl Mapping Bean ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Filename ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġwrite Simple Excel ( header Array : ĠArray < String > Ġ= Ġempty Array (), Ġiterable : ĠIterable < T >, Ġj xl Mapping Bean : ĠJ xl Mapping Bean ?, Ġfull Filename : ĠString , Ġj xl Processor : ĠJ xl Processor Ġ= ĠDEFAULT _ J XL _ PROCESS OR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Headers Ġ= Ġif Ġ( header Array . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj xl Mapping Column Bean List Ġ= Ġj xl Mapping Bean !!. j xl Mapping Column Bean List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader List Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j xl Mapping Column Bean Ġin Ġj xl Mapping Column Bean List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader List [ j xl Mapping Column Bean . index ] Ġ= Ġj xl Mapping Column Bean . header ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader List ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Array . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( j xl Mapping Bean Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( File ( full Filename ). apply Ġ{ Ġthis . create File Include Directory () Ġ}) ĊĠĠĠĠĠĠĠ Ġwritable Workbook . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Simple Excel ( it , Ġheader Array Ġ= Ġnew Headers . to Typed Array ()) Ġ{ Ġsheet , Ġcurrent Row Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj xl Mapping Column Bean List Ġ= Ġj xl Mapping Bean . j xl Mapping Column Bean List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrow Ġ= Ġcurrent Row ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( instance Ġin Ġiterable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j xl Mapping Column Bean Ġin Ġj xl Mapping Column Bean List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfieldName Ġ= Ġj xl Mapping Column Bean . field ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcolumnIndex Ġ= Ġj xl Mapping Column Bean . index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod ReturnValue Ġ= ĠObject Util . getter Or Is Method Invoke ( instance , ĠfieldName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwritable Cell Ġ= Ġj xl Processor . write Process ( column Index , Ġrow , ĠfieldName , Ġmethod ReturnValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsheet . add Cell ( writable Cell ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget Ġor Ġcreate Ġworkbook ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget OrCreate Workbook ( file : ĠFile ): ĠWrit able Workbook Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . create File Include Directory () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWork book . create Workbook ( file ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġworkbook Ġ= ĠWork book . get Workbook ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwritable Workbook Ġ= ĠWork book . create Workbook ( file , Ġworkbook ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworkbook . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwritable Workbook ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget Ġor Ġcreate Ġsheet , Ġonly Ġuse Ġindex Ġto Ġget ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget OrCreate Sheet ( writable Workbook : ĠWrit able Workbook , Ġsheet Name : ĠString , Ġsheet Index : ĠInt ): ĠWrit able Sheet Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsheet : ĠWrit able Sheet ? Ġ= Ġif Ġ( sheet Index Ġ< Ġwritable Workbook . numberOf Sheet s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwritable Workbook . get Sheet ( sheet Index )// will Ġthrow Ġexception ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( sheet Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsheet ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġfix Sheet Name Ġ= Ġsheet Name ĊĠĠĠĠĠĠĠ Ġif Ġ( fix Sheet Name . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfix Sheet Name Ġ= Ġ" sheet $ sheet Index " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwritable Workbook . create Sheet ( fix Sheet Name , Ġsheet Index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġclass Ġread Ġresult ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠRead Result < T >( val Ġheader Index Map : ĠMap < String , ĠInt > Ġ= Ġempty Map (), Ġval Ġdata List : ĠList < T > Ġ= Ġempty List ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġclass Ġwrite Ġoption ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġclass ĠAbstract Write Option ( ĊĠĠĠĠĠĠĠ Ġval Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , ĊĠĠĠĠĠĠĠ Ġval Ġsheet Index : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġstart Row : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġval Ġheader Array : ĠArray < String > Ġ= Ġempty Array () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġclass ĠWrite Option ( ĊĠĠĠĠĠĠĠ Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , ĊĠĠĠĠĠĠĠ Ġsheet Index : ĠInt , ĊĠĠĠĠĠĠĠ Ġstart Row : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), ĊĠĠĠĠĠĠĠ Ġval Ġwrite Data Rows : Ġ( writable Sheet : ĠWrit able Sheet , Ġcurrent Row : ĠInt ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ: ĠAbstract Write Option ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array ) ĊĊĠĠĠ Ġclass ĠWrite Option For Array < T >( ĊĠĠĠĠĠĠĠ Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , ĊĠĠĠĠĠĠĠ Ġsheet Index : ĠInt , ĊĠĠĠĠĠĠĠ Ġstart Row : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), ĊĠĠĠĠĠĠĠ Ġval Ġiterable : ĠIterable < Array < T >>, ĊĠĠĠĠĠĠĠ Ġval Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠAny ? Ġ= Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ} ĊĠĠĠ Ġ) Ġ: ĠAbstract Write Option ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array ) ĊĊĠĠĠ Ġclass ĠWrite Option For Iterable < T >( ĊĠĠĠĠĠĠĠ Ġsheet Name : ĠString Ġ= ĠConstants . String . BLANK , ĊĠĠĠĠĠĠĠ Ġsheet Index : ĠInt , ĊĠĠĠĠĠĠĠ Ġstart Row : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġheader Array : ĠArray < String > Ġ= Ġempty Array (), ĊĠĠĠĠĠĠĠ Ġval Ġiterable : ĠIterable < Iterable < T >>, ĊĠĠĠĠĠĠĠ Ġval Ġtransform : Ġ( column : ĠInt , Ġrow : ĠInt , Ġvalue : ĠT ) Ġ-> ĠAny ? Ġ= Ġ{ Ġ_: ĠInt , Ġ_: ĠInt , Ġvalue : ĠT Ġ-> Ġvalue Ġ} ĊĠĠĠ Ġ) Ġ: ĠAbstract Write Option ( sheet Name , Ġsheet Index , Ġstart Row , Ġheader Array ) ĊĊĠĠĠ Ġinterface ĠJ xl Processor Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġcopy Ġprocess ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcell ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinstance ĊĠĠĠĠĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġcopy Process ( cell : ĠCell , Ġinstance : ĠT ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġread Ġprocess ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġparameter Class ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcell ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠObject ĊĠĠĠĠĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġread Process ( parameter Class : ĠK Class < T >, Ġcell : ĠCell ): ĠAny ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġwrite Ġprocess ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrow ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠfieldName ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠString ĊĠĠĠĠĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwrite Process ( column : ĠInt , Ġrow : ĠInt , ĠfieldName : ĠString , Ġvalue : ĠAny ?): ĠWrit able Cell ĊĠĠĠ Ġ} Ċ } Ċ