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

excel screenshot

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:

excel's cell format dialog

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

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -