17 Mayıs 2014 Cumartesi

Apache POI - Java İle Excele Veri Yazmak

Bu yazıda Java'da Apache POI kütüphanesi kullanılarak Microsoft Excel dosyası nasıl oluşturulur, java ile excel dosyasına veri nasıl yazılır,  Apache POI ile excel işlemlerinde yazı rengi nasıl değiştirilir, yazı biçimi nasıl değiştirilir gibi sorulara cevap verilecek.

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 HSSF Kullanarak XLS Uzantılı Excel Dosyalarına Veri Yazmak

Örnekteki amacımız oluşturulan kişi listesini excel dosyasına aktarmak. Bunun için:
  1. Person adında kişileri temsil edecek sınıfı oluştur.
  2. Test.Main bloğunda kişileri oluştur ve listeye ekle.
  3. Test.createExcelFile(ArrayList list) metoduyla listedeki kişileri excel yapısına aktar.
  4. Test.write(HSSFWorkbook wb) metoduyla excel yapısını dosyaya yaz.



PERSON SINIFI :

public class Person {
 
 private String firstName, lastName;
 private int age;
 
 public Person(String firstName, String lastName, int age)
 {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
 }

 public String getFirstName() {
  return firstName;
 }

 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }

 public String getLastName() {
  return lastName;
 }

 public void setLastName(String lastName) {
  this.lastName = lastName;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

}

#TEST SINIFI

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
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.IndexedColors;
import org.apache.poi.ss.usermodel.Row;

public class HSSFTest {

 
 public static void main(String[] args) {
   
  Person p1 = new Person("Murat", "Tekin", 24);
  Person p2 = new Person("Hande", "Şahin", 32);
  Person p3 = new Person("Gamze", "Ömür", 26);
  
  ArrayList list = new ArrayList<>();
  list.add(p1);
  list.add(p2);
  list.add(p3);
  
  HSSFTest t = new HSSFTest();
  t.createExcelFile(list);
  
 }
 
 public void createExcelFile(ArrayList list)
 {
   //Excel Calisma Kitabini Olustur
   HSSFWorkbook workbook = new HSSFWorkbook();
   
   //Excel Sayfasi Olustur
   HSSFSheet sheet = workbook.createSheet("Kişi Listesi");
   
   //Basliklar icin olusturulacak bicim yapisi icin font nesnesi hazirla
   HSSFFont headerFont = workbook.createFont();
   
   //Yazi stili kalin
   headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
   
   //Yazi rengini belirle
   headerFont.setColor(IndexedColors.BLUE.getIndex()); 
   
   //Basliklar icin bicim nesnesini olustur
   HSSFCellStyle headerStyle = workbook.createCellStyle();
   
   //Hazirladigin Font nesnesini bicime ekle
   headerStyle.setFont(headerFont);
   
   //Basliklari Hazirla
   Row headerRow = sheet.createRow(0);
   Cell hname = headerRow.createCell(0);
   hname.setCellValue("AD");
   
   Cell hlastName = headerRow.createCell(1);
   hlastName.setCellValue("SOYAD");
   
   Cell hage = headerRow.createCell(2);
   hage.setCellValue("YAŞ");
   
   //Olusturulan baslik bicimini hucrelere ekle
   hname.setCellStyle(headerStyle);
   hlastName.setCellStyle(headerStyle);
   hage.setCellStyle(headerStyle);
   
   //Listeyi Yaz
   for(int i = 0; i < list.size(); i++)
   {
     //Olusturdugumuz sayfa icerisinde yeni bir satir olustur
     //i+1 nedeni 0. satır yani ilk satira basliklari yazdigimiz icin 0 dan baslatmadik
     Row row = sheet.createRow(i+1);
     
     //Ilgili satir icin yeni bir hucre olustur
     Cell name = row.createCell(0);
     name.setCellValue(list.get(i).getFirstName());
     
     Cell lastName = row.createCell(1);
     lastName.setCellValue(list.get(i).getLastName());
     
     Cell age = row.createCell(2);
     age.setCellValue(list.get(i).getAge());
    
   }
   //Olusturulan Excel Nesnesini Dosyaya Yaz
   write(workbook);
 }
 
 public void write(HSSFWorkbook workbook)
 {
  try 
  {
       FileOutputStream out = new FileOutputStream(new File("K:\\liste.xls"));
       workbook.write(out);
       out.close();
  } 
  catch (FileNotFoundException e) {
    e.printStackTrace();
  } 
  catch (IOException e) {
       e.printStackTrace();
  }
 }
 
}

1. Apache POI XSSF Kullanarak XLSX Uzantılı Excel Dosyalarına Veri Yazmak 

 

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class XSSFTest {

 
 public static void main(String[] args) {
   
  Person p1 = new Person("Murat", "Tekin", 24);
  Person p2 = new Person("Hande", "Şahin", 32);
  Person p3 = new Person("Gamze", "Ömür", 26);
  
  ArrayList list = new ArrayList<>();
  list.add(p1);
  list.add(p2);
  list.add(p3);
  
  XSSFTest t = new XSSFTest();
  t.createExcelFile(list);
  
 }
 
 public void createExcelFile(ArrayList list)
 {
   //Excel Calisma Kitabini Olustur
   XSSFWorkbook workbook = new XSSFWorkbook();
   
   //Excel Sayfasi Olustur
   XSSFSheet sheet = workbook.createSheet("Kişi Listesi");
   
   //Basliklar icin olusturulacak bicim yapisi icin font nesnesi hazirla
   XSSFFont headerFont = workbook.createFont();
   
   //Yazi stili kalin
   headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
   
   //Yazi rengini belirle
   headerFont.setColor(IndexedColors.BLUE.getIndex()); 
   
   //Basliklar icin bicim nesnesini olustur
   XSSFCellStyle headerStyle = workbook.createCellStyle();
   
   //Hazirladigin Font nesnesini bicime ekle
   headerStyle.setFont(headerFont);
   
   //Basliklari Hazirla
   Row headerRow = sheet.createRow(0);
   Cell hname = headerRow.createCell(0);
   hname.setCellValue("AD");
   
   Cell hlastName = headerRow.createCell(1);
   hlastName.setCellValue("SOYAD");
   
   Cell hage = headerRow.createCell(2);
   hage.setCellValue("YAŞ");
   
   //Olusturulan baslik bicimini hucrelere ekle
   hname.setCellStyle(headerStyle);
   hlastName.setCellStyle(headerStyle);
   hage.setCellStyle(headerStyle);
   
   //Listeyi Yaz
   for(int i = 0; i < list.size(); i++)
   {  

     //Olusturdugumuz sayfa icerisinde yeni bir satir olustur
     //i+1 yazmamizin nedeni 0. satir yani ilk satira basliklari yazdigimizdan 0 dan baslatmadik
     Row row = sheet.createRow(i+1);
     
     //Ilgili satir icin yeni bir hucre olustur
     Cell name = row.createCell(0);
     name.setCellValue(list.get(i).getFirstName());
     
     Cell lastName = row.createCell(1);
     lastName.setCellValue(list.get(i).getLastName());
     
     Cell age = row.createCell(2);
     age.setCellValue(list.get(i).getAge());
    
   }
   //Olusturulan Excel Nesnesini Dosyaya Yaz
   write(workbook);
 }
 
 public void write(XSSFWorkbook workbook)
 {
  try 
  {
       FileOutputStream out = new FileOutputStream(new File("K:\\liste.xlsx"));
       workbook.write(out);
       out.close();
  } 
  catch (FileNotFoundException e) {
    e.printStackTrace();
  } 
  catch (IOException e) {
       e.printStackTrace();
  }
 }
 
}
    
#ÇIKTI :

0 yorum:

Yorum Gönder

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