Created attachment 27362 [details] Patch file This patch intends to provide improved performance for XSSFSheet#write by getting rid of XSSFSheet#ensureRowOrdering. The general idea is to keep the underlying CTSheetData row array collection sorted all times (this idea was highlighted by Yegor Kozlov in http://apache-poi.1045710.n5.nabble.com/Performance-Question-with-CTSheetDataImpl-java-td2335065.html). This requires that methods XSSFSheet#createRow, XSSFSheet#removeRow and XSSFSheet#shiftRows manage the worksheet.getSheetData() row array collection correspondingly. This patch also adapts one of the unit tests: TestXSSFSheet#testCreateRow This test was checking that creating rows in reverse order actually keeps the rows inside worksheet.getSheetData() in the order they have been inserted. This has been changed to a test that actually checks that rows are kept in ascending order.
Created attachment 27363 [details] Patch SVN diff
Applied in r1156272. P.S. I realized that a similar fix can be applied to XSSFRow which needs to keep cells in sorted order too, see XSSFRow#onDocumentWrite. patches are welcome :) Regards, Yegor