package Ġnet . j ib ini . eb . data . impl Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ Ċ import Ġnet . j ib ini . eb . data . Document Ċ import Ġnet . j ib ini . eb . data . Document Descriptor Ċ import Ġnet . j ib ini . eb . data . Report Factory Ċ import Ġnet . j ib ini . eb . impl . Classpath Ċ import Ġnet . j ib ini . eb . impl . Easy Button Context Impl Ċ import Ġnet . j ib ini . eb . test stand . impl . Test Sheet Repository Ċ Ċ import Ġorg . apache . poi . x ss f . user model . XSS F Workbook Ċ import Ġorg . json . JSONObject Ċ Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . util .* Ċ import Ġjava . util . stream . Collectors Ċ Ċ @ Classpath Ċ class ĠExport Workbook Ġ: ĠReport Factory Ċ { ĊĠĠĠ Ġprivate Ġval Ġwork books Ġ= ĠEasy Button Context Impl . getBean ( Test Sheet Repository :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Report ( args : ĠMutable Map < String , ĠArray < String >> ): ĠFile ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠFile (". reports "). mkdir s () ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠFile (". reports /${ UUID . randomUUID ()}. xlsx ") ĊĠĠĠĠĠĠĠ Ġf . createNew File () ĊĠĠĠĠĠĠĠ Ġf . delete On Exit () ĊĊĠĠĠĠĠĠĠ Ġval Ġworkbook Ġ= ĠX SS F Workbook () ĊĠĠĠĠĠĠĠ Ġval Ġsheet Ġ= Ġworkbook . create Sheet (" Data ") ĊĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġargs [" document "] ! ![ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġsearch Ġ= Ġargs [" search "] ?. get ( 0 ) Ġ?: Ġ"" Ġ// TODO ĊĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. serialize Special Floating Point Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. serialize Null s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġval Ġelements : ĠCollection < Document > Ġ= Ġwork books ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. findAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. stream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= ĠDocument ( Document Descriptor . forName ( document )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . internal . put All ( JSONObject ( gson . toJson ( it )). toMap ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . toList ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġhead Ġ= Ġsheet . create Row ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbold Style Ġ= Ġworkbook . create CellStyle () ĊĠĠĠĠĠĠĠ Ġbold Style . font . bold Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġregular Style Ġ= Ġworkbook . create CellStyle () ĊĠĠĠĠĠĠĠ Ġregular Style . font . bold Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġfield ) Ġin ĠDocument Descriptor . forName ( document ). fields . values . with Index ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= Ġhead . create Cell ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell . setCellValue ( field . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell . cell Style Ġ= Ġbold Style ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġd ) Ġin Ġelements . with Index ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġsheet . create Row ( i Ġ+ Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( j , Ġfield ) Ġin ĠDocument Descriptor . forName ( document ). fields . values . with Index ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= Ġrow . create Cell ( j ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell . setCellValue ( d . getString ( field . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell . cell Style Ġ= Ġregular Style ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠFileOutputStream ( f ) ĊĠĠĠĠĠĠĠ Ġworkbook . write ( output ) ĊĠĠĠĠĠĠĠ Ġoutput . flush () ĊĠĠĠĠĠĠĠ Ġoutput . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġf ĊĠĠĠ Ġ} Ċ }