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.