I always struggle to read a string in excel which has a big number 999999999999 but when I read it using apache POI and print it I see the output is 1E+12, so after a bit of google I got a solution which worked for me if (cell.getCellType() == Cell. CELL_TYPE_NUMERIC ) { System.out.print( new BigDecimal(cell.getNumericCellValue()).toPlainString() ); } This approach works but when we require to read a number with leading zeros or an integer as an integer this approach is not efficient and hence the best approach to read an excel data as it is in the original sheet just convert the cell type to string before reading the data . cell=(XSSFCell) cells.next() ; cell.setCellType(Cell. CELL_TYPE_STRING ) ; System.out.print( cell.getRichStringCellValue().toString().trim()); Hope this will help you .