I have 500 rows in my table. When I'm using setRandomAccessWindowSize(1000)
it's working fine. Data is exported successfully in Excel file from resultset, But when I use setRandomAccessWindowSize(100)
it is giving me a
NullPointerException I don't know what I'm doing wrong. Please suggest proper way to do this.
Here's my code:
workbook = new SXSSFWorkbook(100); //SXSSF workbook
workbook.setCompressTempFiles(true);
SXSSFSheet spreadsheet = workbook.createSheet("Sheet1"); //Generating Excel file
SXSSFRow row;
SXSSFCell cell;
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();//Create font
font.setBold(true);//Make font bold
style.setFont(font);//set it to bold
int y = 1;
if (rs.isBeforeFirst() == true) {
while (rs.next()) {
row = spreadsheet.createRow(0);
cell = row.createCell(0);
cell.setCellValue("SR NO");
cell.setCellStyle(style);
for (int s = 1; s <= rsmd.getColumnCount(); s++) {
cell = row.createCell(s);
cell.setCellValue(rs.getMetaData().getColumnName(+s).toUpperCase());
cell.setCellStyle(style);
}
row = spreadsheet.createRow(y);
cell = row.createCell(0);
cell.setCellValue(y + "");
//spreadsheet.autoSizeColumn(0);
for (int x = 1; x <= rsmd.getColumnCount(); x++) {
cell = row.createCell(x);
String address = new CellReference(cell).formatAsString();
cell.setCellValue(address);
cell.setCellValue(rs.getString(+x));
//spreadsheet.autoSizeColumn(x);
}
y++;
}
FileOutputStream out = new FileOutputStream(new File(destination));
workbook.write(out);
out.close();
workbook.dispose();
I have updated while loop in above code. It was writing 0th row multiple times. That's why on 101th row it was giving NullPointer exception as 0th row is already flushed.
Here's my fix-
if (rs.isBeforeFirst() == true) {
while (rs.next()) {
//writing columns
if (rs.isFirst()) {
row = spreadsheet.createRow(0);
cell = row.createCell(0);
cell.setCellValue("SR NO");
cell.setCellStyle(style);
for (int s = 1; s <= rsmd.getColumnCount(); s++) {
cell = row.createCell(s);
cell.setCellValue(rs.getMetaData().getColumnName(+s).toUpperCase());
cell.setCellStyle(style);
}
}
//Writing data
row = spreadsheet.createRow(y);
cell = row.createCell(0);
cell.setCellValue(y + "");
//spreadsheet.autoSizeColumn(0);
for (int x = 1; x <= rsmd.getColumnCount(); x++) {
cell = row.createCell(x);
cell.setCellValue(rs.getString(+x));
//spreadsheet.autoSizeColumn(x);
}
y++;
}
FileOutputStream out = new FileOutputStream(new File(destination));
workbook.write(out);
out.close();
workbook.dispose();