Add excel-export module: Apache POI 6.0.0 XSSF vs SXSSF under a fixed heap, 1,000,000 rows streamed with StreamingResponseBody, OpenCSV, sheet rolling, temp-file cleanup

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_017ic4b4VQVEJWetTT1dYzyJ
This commit is contained in:
2026-10-29 06:18:42 +00:00
co-authored by Claude Sonnet 5.5
parent bded24d929
commit 9b1da079c6
29 changed files with 1113 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
sheetLimit=1000 (header included), 2500 data rows
sheet 1 "Sales": last row index 999, first data cell 1
sheet 2 "Sales 2": last row index 999, first data cell 1000
sheet 3 "Sales 3": last row index 502, first data cell 1999
XSSF and SXSSF files: same sheets, same formatted cell values on every 97th row
styling of a 5,000-row SXSSF file, read back with XSSF
header cell A1 text=Order id bold=true
freeze pane: row split at 1
auto filter: A1:I1
cell styles in the workbook: 5 (for 5,000 rows x 9 cells)
B2 as Excel shows it: 30-May-2025
amount number format: [>=10000000]##\,##\,##\,##0.00;[>=100000]##\,##\,##0.00;##,##0.00
the sheet limit
createRow(1048575) ok
createRow(1048576) -> IllegalArgumentException: Invalid row number (1048576) outside allowable range (0..1048575)
lakh/crore number format, rendered by POI's DataFormatter (not by Excel)
999.50 -> 999.50
99,999.50 -> 99,999.50
123,456.78 -> 1,23,456.78
1,234,567.89 -> 12,34,567.89
12,345,678.90 -> 1,23,45,678.90
123,456,789.10 -> 12,34,56,789.10