Získajte reťazcovú hodnotu bunky Excel s bodom záujmu Apache

1. Prehľad

Bunka programu Microsoft Excel môže mať rôzne typy, ako sú reťazec, číslica, logická hodnota a vzorec.

V tomto rýchlom návode si ukážeme, ako čítať hodnotu bunky ako reťazec - bez ohľadu na typ bunky - s POI Apache.

2. Apache POI

Na začiatok je potrebné do nášho projektu pridať závislosť poi pom.xml spis:

 org.apache.poi poi 4.1.1 

Apache POI používa Pracovný zošit rozhranie predstavujúce súbor programu Excel. Používa to tiež List, Riadoka Bunka rozhrania na modelovanie rôznych úrovní prvkov v súbore Excel. Na Bunka úrovni, môžeme použiť jeho getCellType () metóda na získanie typu bunky. Apache POI podporuje nasledujúce typy buniek:

  • PRÁZDNY
  • BOOLEAN
  • CHYBA
  • FORMULA
  • NUMERICKÉ
  • STRING

Ak chceme na obrazovke zobraziť obsah súboru Excel, chceli by sme získať reťazcovú reprezentáciu bunky namiesto jej nespracovanej hodnoty. Preto pre bunky, ktoré nie sú typu STRING, musíme previesť ich údaje na hodnoty reťazcov.

3. Získajte hodnotu bunkového reťazca

Môžeme použiť DataFormatter načítať hodnotu reťazca bunky programu Excel. Môže získať formátovanú reťazcovú reprezentáciu hodnoty uloženej v bunke. Napríklad ak je číselná hodnota bunky 1,234 a pravidlo formátu tejto bunky má dve desatinné čiarky, dostaneme reťazcovú reprezentáciu „1,23“:

Bunka bunka = // numerická bunka s hodnotou 1,234 a pravidlom formátovania „0,00“ DataFormatter formatter = nový DataFormatter (); Reťazec strValue = formatter.formatCellValue (bunka); assertEquals ("1.23", strValue);

Preto výsledok DataFormatter.formatCellValue () je zobrazovací reťazec presne tak, ako sa zobrazuje v programe Excel.

4. Získajte hodnotu reťazca bunky vzorca

Ak je typ bunky FORMULA, predchádzajúca metóda vráti pôvodný reťazec vzorca namiesto vypočítanej hodnoty vzorca. Preto aby sme získali reťazcovú reprezentáciu hodnoty vzorca, musíme použiť Hodnotiaci vzorec vyhodnotiť vzorec:

Workbook workbook = // existing Workbook setup FormulaEvaluator evaluator = workbook.getCreationHelper (). CreateFormulaEvaluator (); Cell cell = // bunka vzorca s hodnotou "SUM (1,2)" DataFormatter formatter = nový DataFormatter (); Reťazec strValue = formatter.formatCellValue (bunka, hodnotiteľ); assertEquals ("3", strValue);

Táto metóda je všeobecná pre všetky typy buniek. Ak je typ bunky FORMULA, vyhodnotíme ju pomocou daného Hodnotiaci vzorec. V opačnom prípade vrátime reťazcovú reprezentáciu bez akýchkoľvek hodnotení.

5. Zhrnutie

V tomto rýchlom článku sme si ukázali, ako získať reťazcové znázornenie bunky programu Excel bez ohľadu na jej typ. Zdrojový kód článku je ako vždy k dispozícii na stránkach GitHub.