HSSFWorkbook 지원 추가

master
mjkhan21 5 months ago
parent 57fc25d949
commit 5a9dd9f680

@ -30,7 +30,9 @@ public abstract class XLS extends AbstractComponent {
protected Row row;
/**현재 처리 중인 cell*/
protected Cell cell;
protected boolean sxssf;
protected boolean
sxssf,
eager;
/** InputStream .
* @param <T> XLS
@ -96,9 +98,10 @@ public abstract class XLS extends AbstractComponent {
try {
sheet = workbook().getSheetAt(index);
} catch (Exception e) {
if (sxssf) {
if (eager) {
sheet = workbook().createSheet();
((SXSSFSheet)sheet).setRandomAccessWindowSize(rowAccessWindowSize);
if (sxssf)
((SXSSFSheet)sheet).setRandomAccessWindowSize(rowAccessWindowSize);
}
}
@ -120,9 +123,10 @@ public abstract class XLS extends AbstractComponent {
try {
Workbook wb = workbook();
sheet = wb.getSheet(name);
if (sheet == null && sxssf) {
if (sheet == null && eager) {
sheet = wb.createSheet(name);
((SXSSFSheet)sheet).setRandomAccessWindowSize(rowAccessWindowSize);
if (sxssf)
((SXSSFSheet)sheet).setRandomAccessWindowSize(rowAccessWindowSize);
}
if (!equals(sheet, worksheet)) {
@ -143,7 +147,7 @@ public abstract class XLS extends AbstractComponent {
*/
public XLS row(int index) {
row = worksheet.getRow(index);
if (row == null && sxssf)
if (row == null && eager)
row = worksheet.createRow(index);
return this;
}
@ -155,7 +159,7 @@ public abstract class XLS extends AbstractComponent {
*/
public XLS col(int index) {
cell = row != null ? row.getCell(index) : null;
if (cell == null && sxssf)
if (cell == null && eager)
cell = row.createCell(index);
return this;
}

@ -16,6 +16,7 @@ import java.util.stream.IntStream;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
@ -49,9 +50,16 @@ public class XLSWriter extends XLS {
@Override
protected Workbook newWorkbook(InputStream input) throws Exception {
return input == null ?
new SXSSFWorkbook(rowAccessWindowSize) :
new SXSSFWorkbook(new XSSFWorkbook(input), rowAccessWindowSize);
eager = true;
if (input == null)
return new SXSSFWorkbook(rowAccessWindowSize);
Workbook created = WorkbookFactory.create(input);
if (created instanceof XSSFWorkbook xssf)
return new SXSSFWorkbook(xssf, rowAccessWindowSize);
return created;
}
@Override

Loading…
Cancel
Save