Ottieni il valore stringa della cella Excel con Apache POI

1. Panoramica

Una cella di Microsoft Excel può avere diversi tipi come stringa, numerica, booleana e formula.

In questo rapido tutorial, mostreremo come leggere il valore della cella come una stringa, indipendentemente dal tipo di cella, con Apache POI.

2. Apache POI

Per cominciare, dobbiamo prima aggiungere la dipendenza poi al nostro file pom.xml del progetto :

 org.apache.poi poi 4.1.1 

Il POI di Apache utilizza l' interfaccia della cartella di lavoro per rappresentare un file Excel. Utilizza anche interfacce Foglio , Riga e Cella per modellare diversi livelli di elementi in un file Excel. A livello di cella , possiamo usare il suo metodo getCellType () per ottenere il tipo di cella. Apache POI supporta i seguenti tipi di celle:

  • VUOTO
  • BOOLEANO
  • ERRORE
  • FORMULA
  • NUMERICO
  • CORDA

Se vogliamo visualizzare il contenuto del file Excel sullo schermo, vorremmo ottenere la rappresentazione di stringa di una cella, invece del suo valore grezzo. Pertanto, per le celle che non sono di tipo STRING, è necessario convertire i loro dati in valori stringa .

3. Ottieni valore stringa di cella

Possiamo usare DataFormatter per recuperare il valore di stringa di una cella di Excel. Può ottenere una rappresentazione di stringa formattata del valore memorizzato in una cella. Ad esempio, se il valore numerico di una cella è 1.234 e la regola di formattazione di questa cella è di due punti decimali, otterremo la rappresentazione di stringa "1.23":

Cell cell = // a numeric cell with value of 1.234 and format rule "0.00" DataFormatter formatter = new DataFormatter(); String strValue = formatter.formatCellValue(cell); assertEquals("1.23", strValue);

Pertanto, il risultato di DataFormatter.formatCellValue () è la stringa di visualizzazione esattamente come appare in Excel.

4. Ottieni valore stringa di una cella formula

Se il tipo di cella è FORMULA, il metodo precedente restituirà la stringa della formula originale, invece del valore della formula calcolato. Pertanto, per ottenere la rappresentazione di stringa del valore della formula, è necessario utilizzare FormulaEvaluator per valutare la formula :

Workbook workbook = // existing Workbook setup FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); Cell cell = // a formula cell with value of "SUM(1,2)" DataFormatter formatter = new DataFormatter(); String strValue = formatter.formatCellValue(cell, evaluator); assertEquals("3", strValue);

Questo metodo è generale per tutti i tipi di cellule. Se il tipo di cella è FORMULA, lo valuteremo utilizzando il FormulaEvaluator fornito . In caso contrario, restituiremo la rappresentazione di stringa senza alcuna valutazione.

5. Riepilogo

In questo rapido articolo, abbiamo mostrato come ottenere la rappresentazione di stringa di una cella di Excel, indipendentemente dal suo tipo. Come sempre, il codice sorgente dell'articolo è disponibile su GitHub.