logo

Jak czytać plik Excel w Javie

W tej sekcji dowiemy się, jak możemy odczytać dane z pliku Excel.

W Javie czytanie pliku Excela nie jest podobne do czytania pliku Word ze względu na komórki w pliku Excel. JDK nie zapewnia bezpośredniego interfejsu API do odczytu lub zapisu dokumentu Microsoft Excel lub Word. Musimy polegać na bibliotece strony trzeciej, jaką jest Apache POI.

Co to jest POI Apache'a?

Punkt orientacyjny Apache (Słaba implementacja zaciemniania) to interfejs API języka Java umożliwiający odczytywanie i zapisywanie dokumentów Microsoft w obu formatach .xls I .xlsx . Zawiera klasy i interfejsy. Biblioteka Apache POI udostępnia dwie implementacje odczytu plików Excel:

    Implementacja HSSF (straszny format arkusza kalkulacyjnego):Oznacza interfejs API współpracujący z programem Excel 2003 lub wcześniejszymi wersjami.Implementacja XSSF (format arkusza kalkulacyjnego XML):Oznacza interfejs API współpracujący z wersją Excel 2007 lub nowszą.

Interfejsy i klasy w Apache POI

Interfejsy

    Zeszyt ćwiczeń:Reprezentuje Skoroszyt Excela . Jest to interfejs implementowany przez Podręcznik HSSF I XSSFWorkbook .Arkusz:Jest to interfejs reprezentujący Arkusz Excela . Arkusz jest centralną strukturą skoroszytu, która reprezentuje siatkę komórek. Rozszerza się interfejs arkusza java.lang.Iterable .Wiersz:Jest to także interfejs reprezentujący wiersz arkusza kalkulacyjnego. Rozszerza się interfejs Row java.lang.Iterable . Istnieją dwie konkretne klasy: HSSFRow I XSSFow .Komórka:To jest interfejs. Jest to reprezentacja na wysokim poziomie komórka w wierszu arkusza kalkulacyjnego. Komórka HSSFC I XSSFCell zaimplementuj interfejs komórkowy.

Zajęcia

Zajęcia XLS

    Zeszyt ćwiczeń HSSF:Jest to klasa reprezentująca plik XLS.Arkusz HSSF:Jest to klasa reprezentująca arkusz w pliku XLS.HSSFRow:Jest to klasa reprezentująca wiersz w arkuszu pliku XLS.Komórka HSSFC:Jest to klasa reprezentująca komórkę w wierszu pliku XLS.

Zajęcia XLSX

    XSSFZeszyt ćwiczeń:Jest to klasa reprezentująca plik XLSX.Arkusz XSSF:Jest to klasa reprezentująca arkusz w pliku XLSX.XSSFRow:Jest to klasa reprezentująca wiersz w arkuszu pliku XLSX.XSSF Komórka:Jest to klasa reprezentująca komórkę w wierszu pliku XLSX.

Kroki odczytu danych z pliku XLS

Krok 1: Utwórz prosty projekt Java w Eclipse.

Krok 2: Teraz utwórz folder lib w projekcie.

Krok 3: Pobierz i dodaj następujące pliki jar w folderze lib:

Krok 4: Ustaw ścieżkę klasy:

Kliknij projekt prawym przyciskiem myszy -> Ścieżka kompilacji -> Dodaj zewnętrzne pliki JAR -> wybierz wszystkie powyższe pliki jar -> Zastosuj i zamknij.

Krok 5: Teraz utwórz plik klasy o nazwie Przeczytaj wersję demonstracyjną pliku Excel i napisz następujący kod w pliku.

Krok 6: Utwórz plik Excela o nazwie „student.xls” i zapisz w nim trochę danych.


Jak czytać plik Excel w Javie

Krok 7: Zapisz i uruchom program.

Przykład odczytu pliku Excel (.xls).

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; public class ReadExcelFileDemo { public static void main(String args[]) throws IOException { //obtaining input bytes from a file FileInputStream fis=new FileInputStream(new File('C:\demo\student.xls')); //creating workbook instance that refers to .xls file HSSFWorkbook wb=new HSSFWorkbook(fis); //creating a Sheet object to retrieve the object HSSFSheet sheet=wb.getSheetAt(0); //evaluating cell type FormulaEvaluator formulaEvaluator=wb.getCreationHelper().createFormulaEvaluator(); for(Row row: sheet) //iteration over row using for each loop { for(Cell cell: row) //iteration over cell using for each loop { switch(formulaEvaluator.evaluateInCell(cell).getCellType()) { case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type //getting the value of the cell as a number System.out.print(cell.getNumericCellValue()+ '		'); break; case Cell.CELL_TYPE_STRING: //field that represents string cell type //getting the value of the cell as a string System.out.print(cell.getStringCellValue()+ '		'); break; } } System.out.println(); } } } 

Wyjście:

 Name Age Height Swarit 23.0 5' Puneet 25.0 6'1' Swastik 22.0 5'5' Tejas 12.0 4'9' 

Czytanie pliku XLSX

Wszystkie kroki pozostaną takie same, z wyjątkiem formatu pliku.

Tabela: pracownik.xslx


Jak czytać plik Excel w Javie

Przykład odczytu pliku Excel (.xlsx)

W tym przykładzie używamy klasy XSSFWorkbook.

sortowanie przez scalanie
 import java.io.File; import java.io.FileInputStream; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class XLSXReaderExample { public static void main(String[] args) { try { File file = new File('C:\demo\employee.xlsx'); //creating a new file instance FileInputStream fis = new FileInputStream(file); //obtaining bytes from the file //creating Workbook instance that refers to .xlsx file XSSFWorkbook wb = new XSSFWorkbook(fis); XSSFSheet sheet = wb.getSheetAt(0); //creating a Sheet object to retrieve object Iterator itr = sheet.iterator(); //iterating over excel file while (itr.hasNext()) { Row row = itr.next(); Iterator cellIterator = row.cellIterator(); //iterating over each column while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: //field that represents string cell type System.out.print(cell.getStringCellValue() + '			'); break; case Cell.CELL_TYPE_NUMERIC: //field that represents number cell type System.out.print(cell.getNumericCellValue() + '			'); break; default: } } System.out.println(''); } } catch(Exception e) { e.printStackTrace(); } } } 

Wyjście:

 Employee ID Employee Name Salary Designation Department 1223.0 Harsh 20000.0 Marketing Manager Marketing 3213.0 Vivek 15000.0 Financial Advisor Finance 6542.0 Krishna 21000.0 HR Manager HR 9213.0 Sarika 34000.0 Sales Manager Sales 

Odczyt określonej wartości komórki z pliku Excel (.xlsx)

Tabela: Dane pracownika.xlsx


Jak czytać plik Excel w Javie

Przykład

W poniższym przykładzie odczytujemy wartość 2IIrząd i 2IIkolumna. Zliczanie wierszy i kolumn rozpoczyna się od 0. Program zwraca zatem „Inżynier oprogramowania”.


Jak czytać plik Excel w Javie

 //reading value of a particular cell import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadCellExample { public static void main(String[] args) { ReadCellExample rc=new ReadCellExample(); //object of the class //reading the value of 2nd row and 2nd column String vOutput=rc.ReadCellData(2, 2); System.out.println(vOutput); } //method defined for reading a cell public String ReadCellData(int vRow, int vColumn) { String value=null; //variable for storing the cell value Workbook wb=null; //initialize Workbook null try { //reading data from a file in the form of bytes FileInputStream fis=new FileInputStream('C:\demo\EmployeeData.xlsx'); //constructs an XSSFWorkbook object, by buffering the whole stream into the memory wb=new XSSFWorkbook(fis); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e1) { e1.printStackTrace(); } Sheet sheet=wb.getSheetAt(0); //getting the XSSFSheet object at given index Row row=sheet.getRow(vRow); //returns the logical row Cell cell=row.getCell(vColumn); //getting the cell representing the given column value=cell.getStringCellValue(); //getting cell value return value; //returns the cell value } } 

Wyjście:

 Software Engineer