From fd48894f268f990a350313cfe0515961dc8aec32 Mon Sep 17 00:00:00 2001 From: Tyler Peryea Date: Wed, 29 Mar 2023 09:35:53 -0400 Subject: [PATCH 1/3] added more sheets to excel --- .../ix/ginas/exporters/ExcelSpreadsheet.java | 50 ++++++++++++++++--- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java b/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java index daf45f78..1eadcc59 100644 --- a/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java +++ b/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java @@ -1,12 +1,5 @@ package ix.ginas.exporters; -import gov.nih.ncats.common.io.IOUtil; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -14,6 +7,15 @@ import java.util.Date; import java.util.Objects; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import gov.nih.ncats.common.io.IOUtil; + /** * {@link Spreadsheet} implementation that writes out * Excel files. Currently only the newer xlsx is supported because @@ -27,7 +29,14 @@ public class ExcelSpreadsheet implements Spreadsheet { private final Workbook workbook; private final Sheet sheet; + + + private final boolean AUTO_SPILL_OVER=true; + private final long SPILL_OVER_AFTER=1000000; + private final boolean AUTO_SPILL_HEADER_REPEAT=true; + + private final OutputStream out; @@ -36,14 +45,39 @@ private ExcelSpreadsheet(Workbook workbook, OutputStream out) { this.out = out; //just first sheet sheet = workbook.createSheet(); + } @Override public SpreadsheetRow getRow(int i) { org.apache.poi.ss.usermodel.Row r = sheet.getRow(i); + int sheetIndex = 0; + int newRowIndex= i; + if(AUTO_SPILL_OVER) { + sheetIndex= (int) (i/SPILL_OVER_AFTER); + newRowIndex = (int) (i%SPILL_OVER_AFTER); + if(sheetIndex>0) { + if(AUTO_SPILL_HEADER_REPEAT) { + newRowIndex++; //add a row for header + } + } + + while(workbook.getNumberOfSheets(){ + Cell cellNew=rheaderNew.createCell(cellold.getColumnIndex()); + cellNew.setCellValue(cellold.getStringCellValue()); + }); + } + } + } + if (r == null) { - r = sheet.createRow(i); + r = workbook.getSheetAt(sheetIndex).createRow(newRowIndex); } return new RowWrapper(r); } From 94a108b3a9ae3802c9270c168641775f31c6519f Mon Sep 17 00:00:00 2001 From: Newatia Date: Wed, 29 Mar 2023 19:47:46 -0400 Subject: [PATCH 2/3] updated multiple sheets export --- .../ix/ginas/exporters/ExcelSpreadsheet.java | 59 +++++++++++-------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java b/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java index 1eadcc59..8bf7f4bd 100644 --- a/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java +++ b/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java @@ -5,8 +5,11 @@ import java.io.IOException; import java.io.OutputStream; import java.util.Date; +import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; +import gov.nih.ncats.common.stream.StreamUtil; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -33,10 +36,11 @@ public class ExcelSpreadsheet implements Spreadsheet { private final boolean AUTO_SPILL_OVER=true; - private final long SPILL_OVER_AFTER=1000000; + private final long SPILL_OVER_AFTER=500; /*1000000;*/ private final boolean AUTO_SPILL_HEADER_REPEAT=true; - - + + + private List headers; private final OutputStream out; @@ -55,27 +59,36 @@ public SpreadsheetRow getRow(int i) { int sheetIndex = 0; int newRowIndex= i; if(AUTO_SPILL_OVER) { - sheetIndex= (int) (i/SPILL_OVER_AFTER); - newRowIndex = (int) (i%SPILL_OVER_AFTER); - if(sheetIndex>0) { - if(AUTO_SPILL_HEADER_REPEAT) { - newRowIndex++; //add a row for header - } - } - - while(workbook.getNumberOfSheets(){ - Cell cellNew=rheaderNew.createCell(cellold.getColumnIndex()); - cellNew.setCellValue(cellold.getStringCellValue()); - }); - } - } + sheetIndex= (int) (i/SPILL_OVER_AFTER); + newRowIndex = (int) (i%SPILL_OVER_AFTER); + + sheetIndex= (int) (i/SPILL_OVER_AFTER); + newRowIndex = (int) (i%SPILL_OVER_AFTER); + if(sheetIndex>0) { + if(AUTO_SPILL_HEADER_REPEAT) { + newRowIndex++; //add a row for header + } + } + + while(workbook.getNumberOfSheets()c.getStringCellValue()) + .collect(Collectors.toList()); + } + if (r == null) { r = workbook.getSheetAt(sheetIndex).createRow(newRowIndex); } From ecd168ad39600bf33ca04c3c89d6057703914d68 Mon Sep 17 00:00:00 2001 From: Newatia Date: Thu, 30 Mar 2023 10:04:06 -0400 Subject: [PATCH 3/3] updated export --- .../src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java b/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java index 8bf7f4bd..61866204 100644 --- a/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java +++ b/gsrs-core-entities/src/main/java/ix/ginas/exporters/ExcelSpreadsheet.java @@ -32,14 +32,11 @@ public class ExcelSpreadsheet implements Spreadsheet { private final Workbook workbook; private final Sheet sheet; - - private final boolean AUTO_SPILL_OVER=true; - private final long SPILL_OVER_AFTER=500; /*1000000;*/ + private final long SPILL_OVER_AFTER=1000000; private final boolean AUTO_SPILL_HEADER_REPEAT=true; - private List headers; private final OutputStream out; @@ -52,7 +49,6 @@ private ExcelSpreadsheet(Workbook workbook, OutputStream out) { } - @Override public SpreadsheetRow getRow(int i) { org.apache.poi.ss.usermodel.Row r = sheet.getRow(i);