LoadOptions oo = new LoadOptions();
oo.setMemorySetting(MemorySetting.MEMORY_PREFERENCE);
Workbook wb = new Workbook("C:/x.xlsx", oo);
Worksheet s = wb.getWorksheets().get(0);
Cells ocells = s.getCells();
Workbook nwb = new Workbook();
nwb.getSettings().setMemorySetting(MemorySetting.MEMORY_PREFERENCE);
Cells cells = nwb.getWorksheets().get(0).getCells();
cells.setMemorySetting(MemorySetting.MEMORY_PREFERENCE);
int insertRow = 4;
int cRow = 10003;
int posRow = 4;
int tailRows = 1;
int maxRowsPerSheet = 0x100000;
Cells excelResultCells = cells;
for (int i = 0; i < 140; i++) {
if (insertRow + cRow - posRow + 1 + tailRows >= maxRowsPerSheet) {
excelResultCells.insertRows(insertRow, maxRowsPerSheet - insertRow - tailRows);
excelResultCells.copyRows(ocells, posRow, insertRow, maxRowsPerSheet - insertRow - tailRows);
int idx = nwb.getWorksheets().add();
Worksheet newSheet = nwb.getWorksheets().get(idx);
newSheet.copy(s);
excelResultCells = newSheet.getCells();
excelResultCells.deleteRows(posRow, maxRowsPerSheet - insertRow - tailRows);
insertRow = cRow + 1 - (maxRowsPerSheet - insertRow - tailRows);
} else {
excelResultCells.insertRows(insertRow, cRow - posRow + 1);
excelResultCells.copyRows(ocells, posRow, insertRow, cRow - posRow + 1);
insertRow += cRow - posRow + 1;
}
}