worksheet.getHyperlinks().setHyperlinkArray(ctHls);
}
+ int minCell=Integer.MAX_VALUE, maxCell=Integer.MIN_VALUE;
for(XSSFRow row : _rows.values()){
+ // first perform the normal write actions for the row
row.onDocumentWrite();
+
+ // then calculate min/max cell-numbers for the worksheet-dimension
+ if(row.getFirstCellNum() != -1) {
+ minCell = Math.min(minCell, row.getFirstCellNum());
+ }
+ if(row.getLastCellNum() != -1) {
+ maxCell = Math.max(maxCell, row.getLastCellNum());
+ }
+ }
+
+ // finally, if we had at least one cell we can populate the optional dimension-field
+ if(minCell != Integer.MAX_VALUE) {
+ String ref = new CellRangeAddress(getFirstRowNum(), getLastRowNum(), minCell, maxCell).formatAsString();
+ if(worksheet.isSetDimension()) {
+ worksheet.getDimension().setRef(ref);
+ } else {
+ worksheet.addNewDimension().setRef(ref);
+ }
}
XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
sheet = wb.getSheetAt(4);
assertNotNull(sheet.getDrawingPatriarch());
}
+
+ @Test
+ public void test53611() throws IOException {
+ Workbook wb = new XSSFWorkbook();
+ Sheet sheet = wb.createSheet("test");
+ Row row = sheet.createRow(1);
+ Cell cell = row.createCell(1);
+ cell.setCellValue("blabla");
+
+ row = sheet.createRow(4);
+ cell = row.createCell(7);
+ cell.setCellValue("blabla");
+
+ // we currently only populate the dimension during writing out
+ // to avoid having to iterate all rows/cells in each add/remove of a row or cell
+ //OutputStream str = new FileOutputStream("/tmp/53611.xlsx");
+ OutputStream str = new ByteArrayOutputStream();
+ try {
+ wb.write(str);
+ } finally {
+ str.close();
+ }
+
+ assertEquals("B2:I5", ((XSSFSheet)sheet).getCTWorksheet().getDimension().getRef());
+
+ wb.close();
+ }
}