17 Mayıs 2014 Cumartesi

Apache POI - Java İle Excelden Veri Okumak

Java'da Microsoft Office dosya formatlarıyla çalışmanız gerektiğinde Apache POI kütüphanesi oldukça işinize yarayacaktır.

 Öncelikle bu adresten kütüphaneyi indirin ve projenize dahil edin. Ben 3.10 sürümünü kullanmaktayım.

 #ÖNEMLİ :
 Excel dosyalarıyla işlem yaparken kullanacağımız sınıflar, kullandığımız excel formatına göre farklılıklar gösterecek.

Eğer xls(Excel 97-2003) uzantılı dosyalarla çalışacaksanız HSSF etiketine sahip sınıflarla, xlsx uzantısındaki dosyalarda ise XSSF etiketine sahip sınıflarla çalışmalısınız.

Burada her iki format için de kullanımı göreceksiniz. Zaten sadece sınıfların başındaki HSSF kısmını XSSF olarak değiştireceğiz hepsi bu.


1. Apache POI Kullanarak XLS Uzantılı Excel Dosyalarını Okumak

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;

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.Row;

public class Test {

 
 public static void main(String[] args) {
  try 
  {
    //Excel Dosya Yolu
    FileInputStream file = new FileInputStream(new File("K:\\personel.xls"));
 
    // Excel Dosyamizi Temsil Eden Workbook Nesnesi
    HSSFWorkbook workbook = new HSSFWorkbook(file);
 
    // Excel Dosyasının Hangi Sayfası İle Çalışacağımızı Seçelim.
    HSSFSheet sheet = workbook.getSheetAt(0);
 
    // Belirledigimiz sayfa icerisinde tum satirlari tek tek dolasacak
    // iterator nesnesi
    Iterator rowIterator = sheet.iterator();
 
    // Okunacak Satir Oldugu Surece
    while (rowIterator.hasNext()) {
     
     // Excel içerisindeki satiri temsil eden nesne
     Row row = rowIterator.next();
 
     // Her bir satir icin tum hucreleri dolasacak iterator nesnesi
     Iterator cellIterator = row.cellIterator();
     while (cellIterator.hasNext()) {
 
      // Excel icerisindeki hucreyi temsil eden nesne
      Cell cell = cellIterator.next();
 
      // Hucrede bulunan deger turunu kontrol et
      switch (cell.getCellType()) 
      {
      
       case Cell.CELL_TYPE_NUMERIC:
        System.out.print("\tPersonel Maaş : "+ cell.getNumericCellValue() +"\n");
        break;
       
       case Cell.CELL_TYPE_STRING:
        System.out.print("Personel Ad : "+ cell.getStringCellValue());
        break;
      }
     }
 
      }
      file.close();
  } 
  catch (FileNotFoundException e) {
   e.printStackTrace();
  } 
  catch (IOException e) {
   e.printStackTrace();
  }
 }
}

#ÇIKTI  :
Personel Ad : Kemal Soydar    Personel Maaş : 1200.0
Personel Ad : Hale Yeşiler       Personel Maaş : 2500.0
Personel Ad : Şenol Baht         Personel Maaş : 3000.0


2. Apache POI Kullanarak XLSX Uzantılı Excel Dosyalarını Okumak

Önceden de belirttiğimiz gibi sadece HSSF yazdığınız kısımları XSSF olarak değiştirerek işleminizi xlsx dosyaları üzerinde gerçekleştirebileceksiniz.

 
 import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
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 Test {

 
 public static void main(String[] args) {
  try 
  {
    //Excel Dosya Yolu
    FileInputStream file = new FileInputStream(new File("K:\\personel.xlsx"));
 
    // Excel Dosyamizi Temsil Eden Workbook Nesnesi
    XSSFWorkbook workbook = new XSSFWorkbook(file);
 
    // Excel Dosyasının Hangi Sayfası İle Çalışacağımızı Seçelim.
    XSSFSheet sheet = workbook.getSheetAt(0);
 
    // Belirledigimiz sayfa icerisinde tum satirlari tek tek dolasacak
    // iterator nesnesi
    Iterator rowIterator = sheet.iterator();
 
    // Okunacak Satir Oldugu Surece
    while (rowIterator.hasNext()) {
     
     // Excel içerisindeki satiri temsil eden nesne
     Row row = rowIterator.next();
 
     // Her bir satir icin tum hucreleri dolasacak iterator nesnesi
     Iterator cellIterator = row.cellIterator();
     while (cellIterator.hasNext()) {
 
      // Excel icerisindeki hucreyi temsil eden nesne
      Cell cell = cellIterator.next();
 
      // Hucrede bulunan deger turunu kontrol et
      switch (cell.getCellType()) 
      {
      
       case Cell.CELL_TYPE_NUMERIC:
        System.out.print("\tPersonel Maaş : "+ cell.getNumericCellValue() +"\n");
        break;
       
       case Cell.CELL_TYPE_STRING:
        System.out.print("Personel Ad : "+ cell.getStringCellValue());
        break;
      }
     }
 
      }
      file.close();
  } 
  catch (FileNotFoundException e) {
   e.printStackTrace();
  } 
  catch (IOException e) {
   e.printStackTrace();
  }
 }
}
  #KAYNAKLAR#
Aşağıdaki adreslerde bu gibi örnekler ve daha fazlasını bulabilirsiniz. Burada paylaşılan yazı ve örnekler kendimce bulduğum ve hazırladığım notlardır.
http://howtodoinjava.com/2013/06/19/readingwriting-excel-files-in-java-poi-tutorial/
http://poi.apache.org/spreadsheet/quick-guide.html 

 

0 yorum:

Yorum Gönder

Java4Fun Copyright © 2011 | Template created by O Pregador | Powered by Templates de luxo