Få strengverdi av Excel Cell med Apache POI

1. Oversikt

En Microsoft Excel-celle kan ha forskjellige typer som streng, numerisk, boolsk og formel.

I denne raske opplæringen viser vi hvordan du kan lese celleverdien som en streng - uavhengig av celletype - med Apache POI.

2. Apache POI

Til å begynne med må vi først legge poi-avhengigheten til prosjektet vårt pom.xml fil:

 org.apache.poi poi 4.1.1 

Apache POI bruker Arbeidsbok grensesnitt for å representere en Excel-fil. Den bruker også Ark, Rad, og Celle grensesnitt for å modellere forskjellige nivåer av elementer i en Excel-fil. På Celle nivå, kan vi bruke dens getCellType () metode for å få celletypen. Apache POI støtter følgende celletyper:

  • BLANK
  • BOOLEAN
  • FEIL
  • FORMEL
  • NUMERISK
  • STRING

Hvis vi vil vise Excel-filinnholdet på skjermen, vil vi gjerne få strengrepresentasjonen til en celle i stedet for dens råverdi. Derfor, for celler som ikke er av typen STRING, må vi konvertere dataene til strengverdier.

3. Få verdi for cellestreng

Vi kan bruke DataFormatter for å hente strengverdien til en Excel-celle. Det kan få en formatert strengrepresentasjon av verdien som er lagret i en celle. For eksempel, hvis en cells numeriske verdi er 1.234, og formatregelen for denne cellen er to desimaler, får vi strengrepresentasjon "1.23":

Cellecelle = // en numerisk celle med verdien 1,234 og formatregelen "0.00" DataFormatter formatter = new DataFormatter (); Streng strValue = formatter.formatCellValue (celle); assertEquals ("1.23", strValue);

Derfor er resultatet av DataFormatter.formatCellValue () er visningsstrengen nøyaktig slik den vises i Excel.

4. Få strengverdi av en formelcelle

Hvis cellens type er FORMEL, returnerer den forrige metoden den opprinnelige formelstrengen i stedet for den beregnede formelverdien. Derfor, for å få strengrepresentasjonen av formelverdien, må vi bruke FormulaEvaluator for å evaluere formelen:

Arbeidsbok arbeidsbok = // eksisterende oppsett for arbeidsbok FormulaEvaluator evaluator = arbeidsbok.getCreationHelper (). CreateFormulaEvaluator (); Cellecelle = // en formelcelle med verdien "SUM (1,2)" DataFormatter formatter = new DataFormatter (); Streng strValue = formatter.formatCellValue (celle, evaluator); assertEquals ("3", strValue);

Denne metoden er generell for alle celletyper. Hvis celletypen er FORMEL, vil vi evaluere den ved hjelp av det gitte FormulaEvaluator. Ellers returnerer vi strengrepresentasjonen uten evalueringer.

5. Sammendrag

I denne raske artikkelen viste vi hvordan du får strengrepresentasjonen til en Excel-celle, uavhengig av type. Som alltid er kildekoden for artikkelen tilgjengelig på GitHub.