Krijg de tekenreekswaarde van Excel-cel met Apache POI

1. Overzicht

Een Microsoft Excel-cel kan verschillende typen hebben, zoals tekenreeks, numeriek, booleaans en formule.

In deze korte tutorial laten we zien hoe je de celwaarde als een string leest - ongeacht het celtype - met Apache POI.

2. Apache POI

Om te beginnen moeten we eerst de poi-afhankelijkheid aan ons project toevoegen pom.xml het dossier:

 org.apache.poi poi 4.1.1 

Apache POI gebruikt de Werkboek interface om een ​​Excel-bestand weer te geven. Het gebruikt ook Vel, Rij, en Cel interfaces om verschillende niveaus van elementen in een Excel-bestand te modelleren. Bij de Cel niveau, kunnen we zijn getCellType () methode om het celtype te krijgen. Apache POI ondersteunt de volgende celtypen:

  • BLANK
  • BOOLEAN
  • FOUT
  • FORMULE
  • NUMERIEK
  • DRAAD

Als we de inhoud van het Excel-bestand op het scherm willen weergeven, willen we de tekenreeksweergave van een cel krijgen in plaats van de onbewerkte waarde. Daarom voor cellen die niet van het type STRING zijn, moeten we hun gegevens omzetten in tekenreekswaarden.

3. Haal de celstringwaarde op

We kunnen gebruiken DataFormatter om de tekenreekswaarde van een Excel-cel op te halen. Het kan een opgemaakte tekenreeksweergave krijgen van de waarde die in een cel is opgeslagen. Als de numerieke waarde van een cel bijvoorbeeld 1,234 is en de opmaakregel van deze cel twee decimalen is, krijgen we tekenreeksweergave '1,23':

Celcel = // een numerieke cel met de waarde 1.234 en de opmaakregel "0.00" DataFormatter formatter = new DataFormatter (); String strValue = formatter.formatCellValue (cel); assertEquals ("1.23", strValue);

Daarom is het resultaat van DataFormatter.formatCellValue () is de weergavetekenreeks precies zoals deze in Excel wordt weergegeven.

4. Haal de tekenreekswaarde van een formulecel op

Als het celtype FORMULE is, retourneert de vorige methode de oorspronkelijke formulestring in plaats van de berekende formulewaarde. Daarom om de tekenreeksweergave van de formulewaarde te krijgen, moeten we gebruiken Formule Evaluator om de formule te evalueren:

Werkmap werkmap = // bestaande werkmap setup FormulaEvaluator evaluator = workbook.getCreationHelper (). CreateFormulaEvaluator (); Celcel = // een formulecel met de waarde "SUM (1,2)" DataFormatter-formatter = nieuwe DataFormatter (); String strValue = formatter.formatCellValue (cel, evaluator); assertEquals ("3", strValue);

Deze methode is algemeen voor alle celtypen. Als het celtype FORMULE is, zullen we het evalueren met behulp van het gegeven Formule Evaluator. Anders retourneren we de tekenreeksweergave zonder evaluaties.

5. Samenvatting

In dit korte artikel hebben we laten zien hoe u de tekenreeksweergave van een Excel-cel kunt krijgen, ongeacht het type. Zoals altijd is de broncode voor het artikel beschikbaar op GitHub.