java - How to retrieve cell value with same result as displayed in Excel? -
i have following code:
workbook workbook = workbookfactory.create( file ); sheet sheet = workbook.getsheet( "sheet1" ); formulaevaluator evaluator = workbook.getcreationhelper().createformulaevaluator(); dataformatter formatter = new dataformatter( true ); int rownum = 0; int colnum = 0; row row = sheet.getrow( rownum ); cell cell = row.getcell( colnum ); double rawcellvalue = cell.getnumericcellvalue(); system.out.println( "raw value: " + rawcellvalue ); string cellvalue = formatter.formatcellvalue( cell, evaluator ); system.out.println( "formatted: " + cellvalue );
this produces output:
raw value: 1713.6 formatted: $1,713
when open file in excel professional 2010, value displays $1,714
any ideas why poi produces different value excel? there way configure poi returns same value (i.e. obeys same rounding algorithm excel)?
i'm using poi 3.12 xls (excel 97-2013) file.
edit: java format cell $#,##0
(internal poi). here's excel shows:
edit 2: perhaps problem java, not poi. following code:
double number = 1713.6; system.out.println( "double : " + number ); decimalformat format = new decimalformat("#0"); format.setroundingmode( roundingmode.half_down ); system.out.println( "half_down: " + format.format( number ) ); format.setroundingmode( roundingmode.half_up ); system.out.println( "half_up : " + format.format( number ) );
produces result:
double : 1713.6 half_down: 1714 half_up : 1713
why half_down round up half_up round down?
see this answer. looks problem related rounding bug in version of java 8. fixed 8u40 (release notes).
Comments
Post a Comment