On Tue, 22 Nov 2011, Stuart Owen wrote:
Sorry, in my haste I described some of my wrapping code rather than POI code. Of course the saveAs(URI) does not exist, but I meant XSSFWorkbook.write. However, the problem still exists for me in that I get an IndexOutOfBoundsException when reading column width after the workbook is saved. I have isolated the problem in a simple unit test:

Any chance you could open a new bug in bugzilla, and attach the unit test there? That way it shouldn't get forgotten

Also, if you have time, you might want to unzip the file that gets generated (.xlsx is a zip of xml files), and look at the column settings. If you're lucky, you might be able to spot something obvious...

Nick

@Test
   public void testColumnWidthPOI() throws Exception {
       XSSFWorkbook workbook = new XSSFWorkbook();
       XSSFSheet sheet = workbook.createSheet();
       XSSFRow row = sheet.createRow(0);
       XSSFCell cell = row.createCell(0);
       cell.setCellValue("hello world");
assertEquals("hello world",workbook.getSheetAt(0).getRow(0).getCell(0).getStringCellValue()); assertEquals(2048,workbook.getSheetAt(0).getColumnWidth(0)); //<-works

       //gets a UUID based temporary file
       File tmpDir = new File(System.getProperty("java.io.tmpdir"));
       String uuid = UUID.randomUUID().toString();
       File f = new File(tmpDir,uuid+".xlsx");

BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(f));
       workbook.write(stream);
       stream.close();
       assertTrue(f.exists());

assertEquals("hello world",workbook.getSheetAt(0).getRow(0).getCell(0).getStringCellValue()); assertEquals(2048,workbook.getSheetAt(0).getColumnWidth(0)); //<- throws IndexOutOfBoundsException
   }

thanks,
Stuart

On 21/11/11 17:59, Stuart Owen wrote:
Hi,
I'm encountering a problem with a XSSFWorkbook after I save if using saveAs(URI). I am using the 3.8-beta4 version of apache poi. Before saving the workbook I can get the column width for a given column the contains a cell with some content, and this works fine. However after calling saveAs(URI), if I then read the same column width I receive an IndexOutOfBounds Exception, although the cell in that column appears
to still exist and successfully returns with its value.

java.lang.IndexOutOfBoundsException
at org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTWorksheetImpl.getColsArray(Unknown Source) at org.apache.poi.xssf.usermodel.helpers.ColumnHelper.getColumn1Based(ColumnHelper.java:103) at org.apache.poi.xssf.usermodel.helpers.ColumnHelper.getColumn(ColumnHelper.java:95) at org.apache.poi.xssf.usermodel.XSSFSheet.getColumnWidth(XSSFSheet.java:668)


thanks in advance,
Stuart.



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to