That's exactly the issue I had with getting the formats for all decimal numbers, getting the format for 3,5 or 20 decimal places. I also got the string format for these from org.apache.poi.hssf.model.Workbook.
The problem I have is that there is no API to get Workbook (at least I couldn't find one) so I had to modify the source code make the getWorkbook() in HSSFWorkbook as public. David, is there a better was to get this? Thanks, Dave --- "Bigwood, David" <[EMAIL PROTECTED]> wrote: > Thanks for the input - that did it. > -DAB > > > > -----Original Message----- > > From: Laubach Shawn Contr OC-ALC/PSB > > [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, April 13, 2004 4:47 PM > > To: POI Users List > > Subject: RE: Percent Formatting - getBuiltinFormat > > > ArrayIndexOutOfBoundsException > > > > > > That's because the index of 167 is not a built in > format. > > All the built in > > formats are listed in HSSFDataFormat > documentation. You'll > > have to extract > > the format from the workbook. > > > > Shawn > > > > -----Original Message----- > > From: Bigwood, David > [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, April 13, 2004 3:38 PM > > To: POI Users List > > Subject: Percent Formatting - getBuiltinFormat > > ArrayIndexOutOfBoundsException > > > > > > Having an issue related to reading a spreadsheet > containing percentage > > formatting and outputting the values read into XML > in the > > same percentage > > format. > > > > Wondered if someone has seen the issues before and > may know > > to assist or > > even > > better be able to provide a code snippet that does > what I want. > > > > We have a generic Excel spreadsheet reader that > generates XML > > on the back > > end. We throw most things at it OK and it gives us > what we > > want. However we > > have an issue with extracting the built in format > string for perentage > > formatted cells. We can read the format for cells > with > > percentage formats > > with no decimal places "0%" with 2 decimal places > "0.00%" but > > NOT 4 decimal > > places - we get an ArrayIndexOutOfBoundsException > at the > > point below where > > the value returned for call: > > > > Short s = cell.getCellStyle().getDataFormat(); > > > > returns a value (167) which is causing the call > below: > > > > HSSFDataFormat.getBuiltinFormat(s); > > > > To barf with the exception noted. > > > > I added the exception catch to work around this > problem as > > several values > > for > > s are causing it. Anyone got any ideas. > > > > A snippet of bad code follows ;) > > > > > > private void processCell(HSSFCell cell) { > > int cellType = cell.getCellType(); > > switch (cellType) { > > case HSSFCell.CELL_TYPE_NUMERIC : > > double value = cell.getNumericCellValue(); > > // test if a date! > > if (OfficeUtils.isCellDateFormatted(cell)) { > > String cellText = > > OfficeUtils.getDate(cell); > > OfficeUtils.addCell( > > buffy, > > (int) cell.getCellNum(), > > cellText); > > } > > else if > > (OfficeUtils.isCellPercentageFormatted(cell)) > > { > > NumberFormat percent = > > NumberFormat.getPercentInstance(); > > try { > > short s = > > cell.getCellStyle().getDataFormat(); > > error here --> String formatString = > > > > HSSFDataFormat.getBuiltinFormat(s); > > if > > (formatString.indexOf(".") > 0) { > > // count number of 0's > > between . and % > > int i1 = > > formatString.indexOf("."); > > int i2 = > > formatString.indexOf("%"); > > if (i2 != -1 && > > (i2 - i1) > > > 1) { > > > > percent.setMinimumFractionDigits(i2 - i1 - 1); > > } > > } > > } > > catch > > (ArrayIndexOutOfBoundsException e) { > > } > > String cellText = > > > > percent.format(cell.getNumericCellValue()); > > OfficeUtils.addCell( > > buffy, > > (int) cell.getCellNum(), > > cellText); > > } > > ... > > > > > --------------------------------------------------------------------- > > 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] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > __________________________________ Do you Yahoo!? Yahoo! Tax Center - File online by April 15th http://taxes.yahoo.com/filing.html --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
