Вземете низова стойност на Excel Cell с Apache POI

1. Общ преглед

Клетката на Microsoft Excel може да има различни типове като низ, числова, булева и формула.

В този бърз урок ще покажем как да четем стойността на клетката като низ - независимо от типа на клетката - с Apache POI.

2. Apache POI

Като начало първо трябва да добавим poi зависимостта към нашия проект pom.xml файл:

 org.apache.poi poi 4.1.1 

Apache POI използва интерфейса на работната книга, за да представлява файл на Excel. Той също така използва интерфейси Sheet , Row и Cell за моделиране на различни нива на елементи във файл на Excel. На ниво клетка можем да използваме метода getCellType () , за да получим типа клетка. Apache POI поддържа следните типове клетки:

  • ПРАЗНО
  • БУЛИН
  • ГРЕШКА
  • ФОРМУЛА
  • ЧИСЛЕНО
  • STRING

Ако искаме да покажем съдържанието на файла на Excel на екрана, бихме искали да получим низовото представяне на клетка, вместо нейната сурова стойност. Следователно за клетки, които не са от тип STRING, трябва да преобразуваме техните данни в низови стойности .

3. Вземете стойност на низовете на клетки

Можем да използваме DataFormatter, за да извлечем низовата стойност на клетка на Excel. Той може да получи форматирано низово представяне на стойността, съхранена в клетка. Например, ако числовата стойност на клетката е 1.234 и правилото за формат на тази клетка е две десетични точки, ще получим представяне на низа „1.23“:

Cell cell = // a numeric cell with value of 1.234 and format rule "0.00" DataFormatter formatter = new DataFormatter(); String strValue = formatter.formatCellValue(cell); assertEquals("1.23", strValue);

Следователно резултатът от DataFormatter.formatCellValue () е низът за показване точно както се появява в Excel.

4. Вземете низова стойност на формула клетка

Ако типът на клетката е FORMULA, предишният метод ще върне оригиналния низ на формулата, вместо изчислената стойност на формулата. Следователно, за да получим низовото представяне на стойността на формулата, трябва да използваме FormulaEvaluator, за да оценим формулата :

Workbook workbook = // existing Workbook setup FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); Cell cell = // a formula cell with value of "SUM(1,2)" DataFormatter formatter = new DataFormatter(); String strValue = formatter.formatCellValue(cell, evaluator); assertEquals("3", strValue);

Този метод е общ за всички типове клетки. Ако типът клетка е FORMULA, ще я оценим, като използваме дадения FormulaEvaluator . В противен случай ще върнем низовото представяне без никакви оценки.

5. Обобщение

В тази бърза статия показахме как да получим низовото представяне на клетка на Excel, независимо от нейния тип. Както винаги, изходният код на статията е достъпен в GitHub.