Få strengværdi af Excel Cell med Apache POI

1. Oversigt

En Microsoft Excel-celle kan have forskellige typer som streng, numerisk, boolsk og formel.

I denne hurtige vejledning viser vi, hvordan man læser celleværdien som en streng - uanset celletype - med Apache POI.

2. Apache IP

Til at begynde med skal vi først tilføje poi-afhængighed til vores projekt pom.xml fil:

 org.apache.poi poi 4.1.1 

Apache POI bruger Arbejdsbog interface til at repræsentere en Excel-fil. Det bruger også Ark, Rækkeog Celle grænseflader for at modellere forskellige niveauer af elementer i en Excel-fil. Ved Celle niveau, kan vi bruge dens getCellType () metode til at få celletypen. Apache POI understøtter følgende celletyper:

  • BLANK
  • BOOLEAN
  • FEJL
  • FORMEL
  • NUMERISK
  • SNOR

Hvis vi vil vise Excel-filindholdet på skærmen, vil vi gerne få strengrepræsentationen af ​​en celle i stedet for dens rå værdi. Derfor, for celler, der ikke er af typen STRING, skal vi konvertere deres data til strengværdier.

3. Få værdi for cellestreng

Vi kan bruge DataFormatter for at hente strengværdien af ​​en Excel-celle. Det kan få en formateret strengrepræsentation af værdien, der er gemt i en celle. For eksempel, hvis en celles numeriske værdi er 1.234, og formatreglen for denne celle er to decimaler, får vi strengrepræsentation "1.23":

Cellecelle = // en numerisk celle med en værdi på 1,234 og formatregel "0.00" DataFormatter formatter = new DataFormatter (); Streng strValue = formatter.formatCellValue (celle); assertEquals ("1.23", strValue);

Derfor er resultatet af DataFormatter.formatCellValue () er displaystrengen nøjagtigt som den vises i Excel.

4. Få strengværdi af en formelcelle

Hvis cellens type er FORMEL, returnerer den foregående metode den originale formelstreng i stedet for den beregnede formelværdi. Derfor, for at få strengrepræsentationen af ​​formelværdien skal vi bruge Formelevaluator at evaluere formlen:

Arbejdsbog-projektmappe = // eksisterende opsætning af projektmappe FormulaEvaluator evaluator = projektmappe.getCreationHelper (). CreateFormulaEvaluator (); Cellecelle = // en formelcelle med værdien "SUM (1,2)" DataFormatter formatter = new DataFormatter (); Streng strValue = formatter.formatCellValue (celle, evaluator); assertEquals ("3", strValue);

Denne metode er generel for alle celletyper. Hvis celletypen er FORMEL, evaluerer vi den ved hjælp af det givne Formelevaluator. Ellers returnerer vi strengrepræsentationen uden nogen evalueringer.

5. Resume

I denne hurtige artikel viste vi, hvordan man får strengrepræsentationen af ​​en Excel-celle, uanset dens type. Som altid er kildekoden til artiklen tilgængelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found