come leggere il contenuto esatto della cella del file excel nel POI apache

quando leggo un contenuto di una cella, ad esempio se è in formato data, viene convertito in un altro valore come 12/31/2099 -> 46052 e $ 50,00 -> 50 e 50,00% -> 0,5.

Ma quello che voglio è ottenere il valore esatto della stringa per ogni cella.

Il mio codice è così:

cell.setCellType(Cell.CELL_TYPE_STRING); String str = cell.getStringCellValue(); 

Non c’è bisogno di formattazione esplicita, apache-poi fornisce la class DataFormatter come utility per sfruttare il formato del contenuto così come appare su excel. Puoi anche scegliere i formati personalizzati, sarebbe un semplice esempio (la cella fa riferimento al tuo object XSSFCell ):

 System.out.println(new DataFormatter().formatCellValue(cell)); 

Foglio di Excel assomiglia a:

inserisci la descrizione dell'immagine qui

Usando DataFormatter (sop dichiarazione sopra) stampa:

 50% $ 1,200 12/21/14 

Dove verrà stampata la normale formattazione:

 0.5 1200.0 21-Dec-2014 

Non proverei a modificare il tipo di dati mentre sto leggendo.

Invece di quello, proverei a

  • ottenere il tipo di cella prima di tutto
  • quindi utilizzare il metodo getter appropriato per ciascun tipo di dati

Per esempio:

 // Let's say you have prepared a DecimalFormat yourNumberFormatter and a // DateFormat yourDateFormatter with the format that is appropiate to your // presentation Cell cell = ...; String value = null; switch (cell.getCellType()) { case Cell.TYPE_NUMERIC: // Date format if ( DateUtil.isCellDateFormatted(cell) ) { value = yourDateFormatter.format(cell.getDateCellValue()); } else { value = yourNumberFormatter.format(cell.getNumericCellValue()); } break; case Cell.TYPE_STRING: value = cell.getStringCellValue(); break; // Etc. }