Bu bölümde excel dosyasındaki verileri nasıl okuyabileceğimizi öğreneceğiz.
sinema oyuncusu kajal
Java'da excel dosyasını okumak, excel dosyasındaki hücreler nedeniyle word dosyasını okumaya benzemez. JDK, Microsoft Excel veya Word belgesini okumak veya yazmak için doğrudan API sağlamaz. Apache POI olan üçüncü taraf kütüphaneye güvenmek zorundayız.
Apache POI nedir?
Apache İÇN'si (Zayıf Gizleme Uygulaması), Microsoft Belgelerini her iki biçimde de okumak ve yazmak için kullanılan bir Java API'sidir. .xls Ve .xlsx . Sınıfları ve arayüzleri içerir. Apache POI kitaplığı, excel dosyalarını okumak için iki uygulama sağlar:
Apache POI'de Arayüzler ve Sınıflar
Arayüzler
Sınıflar
XLS Sınıfları
XLSX Sınıfları
XLS dosyasından veri okuma adımları
Aşama 1: Eclipse'de basit bir Java projesi oluşturun.
Adım 2: Şimdi projede bir lib klasörü oluşturun.
Aşama 3: Aşağıdaki jar dosyalarını indirip lib klasörüne ekleyin:
- Commons-koleksiyonları4-4.1.jar Buraya tıklayın
- poi-3.17.jar Buraya tıklayın
- poi-ooxml-3.17.jar Buraya tıklayın
- poi-ooxml-şemalar-3.17.jar Buraya tıklayın
- xmlbeans-2.6.0.jar Buraya tıklayın
Adım 4: Sınıf Yolunu Ayarlayın:
Projeye sağ tıklayın -> Yol Oluştur -> Harici JAR Ekle -> yukarıdaki tüm jar dosyalarını seçin -> Uygula ve kapatın.
Adım 5: Şimdi isimli bir sınıf dosyası oluşturun ExcelFileDemo'yu Okuyun ve dosyanın içerisine aşağıdaki kodu yazın.
Adım 6: 'Student.xls' adında bir excel dosyası oluşturun ve içine bazı veriler yazın.
Adım 7: Programı kaydedip çalıştırın.
Excel dosyası (.xls) dosyasını okuma örneği
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(); } } }
Çıktı:
ikili arama algoritması
Name Age Height Swarit 23.0 5' Puneet 25.0 6'1' Swastik 22.0 5'5' Tejas 12.0 4'9'
XLSX Dosyasını Okuma
Dosya formatı dışında tüm adımlar aynı kalacaktır.
Masa: çalışan.xslx
Excel dosyasını okuma örneği (.xlsx)
Bu örnekte XSSFWorkbook sınıfını kullanıyoruz.
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(); } } }
Çıktı:
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
Bir excel dosyasından (.xlsx) belirli bir hücre değerini okuma
Masa: ÇalışanVerileri.xlsx
tepki tablosu
Örnek
Aşağıdaki örnekte 2'nin değerini okuyoruz.vesıra ve 2vekolon. Satır ve sütun sayımı 0'dan başlar. Böylece program 'Yazılım Mühendisi' sonucunu döndürür.
//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 } }
Çıktı:
Software Engineer