77import com .comphenix .rema1000 .model .TopListMetadata ;
88import com .comphenix .rema1000 .model .Transaction ;
99import com .comphenix .rema1000 .model .TransactionsInfo ;
10- import org .apache .poi .hssf .usermodel .HSSFWorkbook ;
11- import org .apache .poi .ss .usermodel .*;
12- import org .apache .poi .xssf .usermodel .XSSFWorkbook ;
10+ import org .dhatim .fastexcel .Workbook ;
11+ import org .dhatim .fastexcel .Worksheet ;
1312
1413import java .io .IOException ;
1514import java .io .OutputStream ;
1615import java .util .List ;
1716import java .util .Objects ;
1817
1918public class ExcelWriter extends DataWriter <DataRoot > {
20- public enum Format {
21- XLSX ,
22- XLS
23- }
24-
25- private Format format ;
2619 private DataTableConverter tableConverter = new DataTableConverter ();
2720
28- public ExcelWriter (Format format ) {
29- this .format = Objects .requireNonNull (format , "format cannot be NULL" );
30- }
31-
3221 @ Override
3322 public void write (OutputStream output , DataRoot data ) throws IOException {
34- try (Workbook workbook = createWorkbook ()) {
35- WorkbookStyle workbookStyle = createWorkbookStyle (workbook );
36-
37- writeTransactionsInfo (workbookStyle , workbook .createSheet ("Info" ), data .getTransactionsInfo ());
23+ Workbook workbook = new Workbook (output , "RemaTransactionParser" , "1.0" );
24+ WorkbookStyle workbookStyle = createWorkbookStyle ();
3825
39- writeTopList (workbookStyle , workbook .createSheet ("TopList" ),
40- data .getTopList ());
41- writeTransactions (workbookStyle , workbook .createSheet ("Transactions" ),
42- data .getTransactionsInfo ().getTransactionList ());
43- writeTransactionsPayments (workbookStyle , workbook .createSheet ("Transactions Payments" ),
44- data .getTransactionsInfo ().getTransactionList ());
45- writeTransactionUsedOffers (workbookStyle , workbook .createSheet ("Used Offers" ),
46- data .getTransactionsInfo ().getTransactionList ());
26+ writeTransactionsInfo (workbookStyle , workbook .newWorksheet ("Info" ), data .getTransactionsInfo ());
4727
48- workbook .write (output );
49- }
50- }
28+ writeTopList (workbookStyle , workbook .newWorksheet ("TopList" ),
29+ data .getTopList ());
30+ writeTransactions (workbookStyle , workbook .newWorksheet ("Transactions" ),
31+ data .getTransactionsInfo ().getTransactionList ());
32+ writeTransactionsPayments (workbookStyle , workbook .newWorksheet ("Transactions Payments" ),
33+ data .getTransactionsInfo ().getTransactionList ());
34+ writeTransactionUsedOffers (workbookStyle , workbook .newWorksheet ("Used Offers" ),
35+ data .getTransactionsInfo ().getTransactionList ());
5136
52- private Workbook createWorkbook () {
53- return format == Format .XLSX ? new XSSFWorkbook () : new HSSFWorkbook ();
37+ workbook .finish ();
5438 }
5539
56- private void writeTransactionsInfo (WorkbookStyle workbookStyle , Sheet info , TransactionsInfo transactionsInfo ) {
40+ private void writeTransactionsInfo (WorkbookStyle workbookStyle , Worksheet info , TransactionsInfo transactionsInfo ) {
5741 writeInfoLine (workbookStyle , info , 0 , "Bonus Total" , transactionsInfo .getBonusTotal ());
5842 writeInfoLine (workbookStyle , info , 1 , "Discount Total" , transactionsInfo .getDiscountTotal ());
5943 writeInfoLine (workbookStyle , info , 2 , "Purchase Total" , transactionsInfo .getPurchaseTotal ());
6044 }
6145
62- private void writeInfoLine (WorkbookStyle style , Sheet sheet , int rowIndex , String infoName , Object infoValue ) {
63- Row row = sheet .createRow (rowIndex );
64- Cell headerCell = row .createCell (0 );
65- headerCell .setCellStyle (style .getHeaderStyle ());
66- headerCell .setCellValue (infoName );
67-
68- ExcelCells .writeCell (style , row .createCell (1 ), infoValue , infoValue != null ? infoValue .getClass () : Object .class );
46+ private void writeInfoLine (WorkbookStyle style , Worksheet sheet , int rowIndex , String infoName , Object infoValue ) {
47+ CellStyle .writeStyled (sheet , rowIndex , 0 , infoName , style .getHeaderStyle ());
48+ CellStyle .writeStyled (sheet , rowIndex , 1 , infoValue , null );
6949 }
7050
71- private void writeTransactionsPayments (WorkbookStyle workbookStyle , Sheet sheet , List <Transaction > transactionList ) throws IOException {
51+ private void writeTransactionsPayments (WorkbookStyle workbookStyle , Worksheet sheet , List <Transaction > transactionList ) throws IOException {
7252 if (transactionList == null || transactionList .isEmpty ()) {
7353 return ;
7454 }
@@ -77,7 +57,7 @@ private void writeTransactionsPayments(WorkbookStyle workbookStyle, Sheet sheet,
7757 }
7858 }
7959
80- private void writeTransactionUsedOffers (WorkbookStyle workbookStyle , Sheet sheet , List <Transaction > transactionList ) throws IOException {
60+ private void writeTransactionUsedOffers (WorkbookStyle workbookStyle , Worksheet sheet , List <Transaction > transactionList ) throws IOException {
8161 if (transactionList == null || transactionList .isEmpty ()) {
8262 return ;
8363 }
@@ -86,12 +66,12 @@ private void writeTransactionUsedOffers(WorkbookStyle workbookStyle, Sheet sheet
8666 }
8767 }
8868
89- private void writeTopList (WorkbookStyle workbookStyle , Sheet sheet , TopListMetadata metadata ) throws IOException {
69+ private void writeTopList (WorkbookStyle workbookStyle , Worksheet sheet , TopListMetadata metadata ) throws IOException {
9070 TableWriter writer = new ExcelTableWriter (workbookStyle , sheet );
9171 tableConverter .writeTableTopList (writer , metadata );
9272 }
9373
94- private void writeTransactions (WorkbookStyle workbookStyle , Sheet sheet , List <Transaction > transactionList ) throws IOException {
74+ private void writeTransactions (WorkbookStyle workbookStyle , Worksheet sheet , List <Transaction > transactionList ) throws IOException {
9575 if (transactionList == null || transactionList .isEmpty ()) {
9676 return ;
9777 }
@@ -100,20 +80,10 @@ private void writeTransactions(WorkbookStyle workbookStyle, Sheet sheet, List<Tr
10080 }
10181 }
10282
103- private WorkbookStyle createWorkbookStyle (Workbook workbook ) {
104- CellStyle headerStyle = createHeaderStyle (workbook );
105- CellStyle dateStyle = workbook .createCellStyle ();
106- dateStyle .setDataFormat ((short )0x16 );
107-
108- return new WorkbookStyle (headerStyle , dateStyle );
109- }
110-
111- private CellStyle createHeaderStyle (Workbook workbook ) {
112- CellStyle headerStyle = workbook .createCellStyle ();
113-
114- Font headerFont = workbook .createFont ();
115- headerFont .setBold (true );
116- headerStyle .setFont (headerFont );
117- return headerStyle ;
83+ private WorkbookStyle createWorkbookStyle () {
84+ return new WorkbookStyle (
85+ (sheet , r , c ) -> sheet .style (r , c ).bold ().set (),
86+ (sheet , r , c ) -> sheet .style (r , c ).format (Integer .toString (0x16 )).set ()
87+ );
11888 }
11989}
0 commit comments