Java ile Excel’e Yazma İşlemi

Batuhan Düzgün tarafından yayınlanmıştır 6. September 2010 07:05

Java ile Excel’e  Yazma  İşlemi

Merhaba  arkadaşlar sizlere bu yazımda Java ile Excel işlemlerini anlatmaya çalışacağım.Java ile ilgili bu tip yazılar bundan sonra  daha sıklıkla devam edecek,Excel,Veritabanı,OpenOffice  gibi programlara bağlanıp veri yazma ve okuma işlemlerinin yanı sıra Java ile Soket Programlama ve Java SNMP Programlama konularından çeşitli kod örnekleri ve makaleler yazacağım.

Gerçekten eğer ki Java dünyasına adım atarsanız.Java ile yapamayacaklarınız çok sınırlı hemen hemen her işlem için,her protokol için API’leri açık kaynak kodlu projeleri ve daha fazlası var.Bu yüzden çok çeşitli alanlarda kullanabilen ve platform bağımsız bir dil.Linux,MAC,Windows gibi işletim sistemlerinde sıkıntı yaratmadan çalışabilen atom karıncamız.Tek gerektirdiği şey Java Sanal Makinesi.Dünyanın en güçlü dili ve kullanışlı dili diyebiliriz.

Java ve Excel ?

Konumuza dönecek olursak,Java ile Excel işlemlerini yapabilmek için API’lere ihtiyacımız olacak.Kullanacağımız API’nin adı  “jexcelapi “ .İnternetten indirdikten sonra zip dosyasını açınca içerisinde bir adet   “jxl.jar”  JAR dosyası görecekseniz.Bu JAR dosyasını projemize ekleyip Excel işlemleri yapabiliriz.Aynı zamanda  projenin  açık kaynak kodlarını  “src”  adlı dosyadan inceleyebilirsiniz.Yeni eklemeler yapıp geliştirebilirsiniz.

Netbeans  Projesi  Açıyoruz …

File>>New Prohect>>Java>>Java Application  yolunu takip ederek boş bir proje açıyoruz.Ardından Proje içinde bulunan  “Libraries” klasörüne sağ tıklayıp, “Add JAR/Folder”  diyoruz.Aşağıdaki resimde görüldüğü gibi;

 

Hız kaybetmeden projemize sağ tıklayıp  yeni boş bir class sayfası ekliyoruz.Ben ismini  “JavaExcelWrite” şeklinde verdim.

Bu sınıfımız Java programımızdan  Excel’ e değerler yazdırma işlevini üstlenecek kodları barındıracak.Aşağıda kodlar açıklamalarıyla birlikte verilmiştir.

JavaExcelWrite.java Kodları …

package javaexceluygulamasi_write;

import java.io.File;

import java.io.IOException;

import java.util.Locale;

import jxl.CellView;

import jxl.Workbook;

import jxl.WorkbookSettings;

import jxl.format.UnderlineStyle;

import jxl.write.Label;

import jxl.write.Number;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

public class JavaExcelWrite {

    private WritableCellFormat AltiCiziliKalinFormat; //Hücre başlığının stilini belirlemek için kullanacağız.

    private WritableCellFormat AnaFont;//Değerleri yazdıracağımız hücrelerin stili için.

    private String DosyaYolu;//Dosya yolunu saklayacağız.

    public JavaExcelWrite(){

        //Boş kurucu

    }

    public void setDosyaYolu(String ExcelDosyaYolum){

        //yukarıdan gönderilen string ifadeyi Dosya yoluna atıyoruz.

        this.DosyaYolu=ExcelDosyaYolum;

    }

    //Bu metod excele yazma işlemini gerçekleştirecek.

    public void ExceleYaz() throws IOException, WriteException{

        File Dosyam=new File(this.DosyaYolu);//verilen dosya yoluna uygun dosya açıyoruz.

        WorkbookSettings GenelAyarlar=new WorkbookSettings();//Excel'a ait bir tane çalışma kitabı parçası açıyoruz.

        GenelAyarlar.setLocale(Locale.ENGLISH);//Dil seçeneğini İngilizce yapıyoruz.

        //Not:Ben Türkçe bulamadım bulan arkadaşlar düzeltebilirler.

        //Yazılabilir bir çalışma kitabı açıyoruz.

        //Verilen dosya yolu ve Font özelliklerine uygun yazılabilir excel çalışma kitabı döndürecek.

        WritableWorkbook CalismaDosyasi=Workbook.createWorkbook(Dosyam,GenelAyarlar);

        //Çalışma kitabımızın ismini "BatuxCalismaDosyasi" şeklinde belirliyoruz,0 (sıfır) ise kaçıncı çalışma kitabı

        //Biliyorsunuz Excel'de birden fazla çalışma kitabı açabilirsiniz.

        CalismaDosyasi.createSheet("BatuxCalismaDosyasi", 0);

        //Çalışma kitabımızdan ilk sayfayı getSheet metoduyla alıyoruz.

        // 0 sayısı ilk nolu sayfayı alacağımızı söyler.

        WritableSheet ExcelSayfasi=CalismaDosyasi.getSheet(0);

        //Yazacağımız değerlere başlık oluşturacağız.

        LabelOlustur(ExcelSayfasi);

        //Excele yazma yapacağız.

        CalismaDosyasi.write();

        //Yazma işleminden sonra prosesi sonlandıracağız.

        CalismaDosyasi.close();

    }

    public void LabelOlustur(WritableSheet GelenExcelSayfasi) throws WriteException{

        //Aşağıdaki stil sütun başlık hücreleri için.

        //Arial yazı tipinde,yazı boyutu 14 olan bir stil tanımlıyoruz.

        WritableFont Font14Br=new WritableFont(WritableFont.ARIAL,14);

        //Hücre stilini yukarıda oluşturduğumuz formattan veriyoruz.

        this.AnaFont=new WritableCellFormat(Font14Br);

        this.AnaFont.setWrap(true);

        //Aşağıdaki stil değerleri yazacağımız hücreler için.

        //Arial yazı tipinde,yazı boyu 12 olan bir stil tanımlıyoruz.

        WritableFont Font12BrAltiCiziliKalin=new WritableFont(WritableFont.ARIAL,12,WritableFont.BOLD,false,UnderlineStyle.SINGLE);

        //Hucre stilini yukarıda oluşturduğumuz formattan aldırıyoruz.

        this.AltiCiziliKalinFormat=new WritableCellFormat(Font12BrAltiCiziliKalin);

        this.AltiCiziliKalinFormat.setWrap(true);

        //Hucre stillerini hücre görünümü ayarlarını düzenleyen sınıfa veriyoruz.

        //Böyle yapılan stil değişikliği gözükebilecek.

        CellView HucreBicimi=new CellView();

        HucreBicimi.setFormat(this.AnaFont);

        HucreBicimi.setFormat(this.AltiCiziliKalinFormat);

        HucreBicimi.setAutosize(true);

        //BaslikEkle metodyla excel sayfasına başlık ekliyoruz.

        //Biz metodu iki kere çağırdığımız için iki adet hücre başlığı oluşturacak.

        BaslikEkle(GelenExcelSayfasi,0,0,"SUTUN1");

        BaslikEkle(GelenExcelSayfasi,1,0,"SUTUN2");

        //Oluşturduğumuz iki sütuna da çeşitli değerler yazdıracağız.

        //İçerik oluşturma işlemi yapıyoruz.

        IcerikOlustur(GelenExcelSayfasi);

    }

    public void IcerikOlustur(WritableSheet GelenExcelSayfasi) throws WriteException{

        //Basit bir for döngüsünde ilk sütun için i indisinin 4 katını alıp,

        //hücreye yazacağız.

        //İkinci sütun için ise i indisinin 5 katını alıp hucreye yazdıracağız.

        for(int i=1; i<=45; i++){

            //İçeriği bu for içinde oluşturuyoruz.

            HucreyeDegerYaz(GelenExcelSayfasi,0,i,i*5);

            HucreyeDegerYaz(GelenExcelSayfasi,1,i,i*4);

        }

    }

    public void BaslikEkle(WritableSheet ExcelPage,int SutunNo,int SatirNo,String BaslikMetni) throws WriteException{

        //Bu metod verilen sütun numarası ve satır numarasının olduğu hucreye başlık ekler.

        //Aşağıdaki gerekli görünüm ayarları yapılır.

        Label BaslikLabel=new Label(SutunNo,SatirNo,BaslikMetni,this.AltiCiziliKalinFormat);

        //başlık excel sayfasına eklenir.

        ExcelPage.addCell(BaslikLabel);

    }

    public void HucreyeDegerYaz(WritableSheet GelenExcelSayfasi,int SutunNo,int SatirNo,int GelenHucreDegeri) throws WriteException{

        //Bu metod başlık altındaki hücrelere değer yazar.

        //Aşağıdaki satırda ilgili görünüm ayarları yapılır.

        Number HucreninIcerigi=new Number(SutunNo,SatirNo,GelenHucreDegeri,this.AnaFont);

        //Excel sayfasındaki hücreye içerik yazdırılır.

        GelenExcelSayfasi.addCell(HucreninIcerigi);

    }

}

Yukarda yazdığımız sınıfın yaptığı iş kısaca aslında şudur;dosya yolu verilen Excel sayfasına,iki adet “SUTUN1”  ve “SUTUN2” adlı başlık ekleyip,bu başlıklar altına bir döngü içinde indisin dört katını ve beş katını alıp sırayla SUTUN1’e  ve SUTUN2’ye ekler. Şimdi de “main”  metodunu yazıp,ardından projemizi çalıştıralım ve sonuçları görelim.

Main.java Kodları 

/*

 * To change this template, choose Tools | Templates

 * and open the template in the editor.

 */

package javaexceluygulamasi_write;

import java.io.IOException;

import jxl.write.WriteException;

public class Main {

    private static  JavaExcelWrite   JavaAndExcel;

    public static void main(String[] args) throws IOException, WriteException {

        JavaAndExcel=new JavaExcelWrite();

        JavaAndExcel.setDosyaYolu("C:\\Users\\PC\\Documents\\Kitap1.xls");

        JavaAndExcel.ExceleYaz();

        System.out.println("Yazma işlemi gerçekleştimi diye C:\\Users\\PC\\Documents\\Kitap1.xls dizinindeki Excel sayfasını inceleyiniz.");  

    }

}

Çalıştırdıktan sonra Excel dosyamızın bulunduğu dizine gidip sonuçları kontrol edelim.Projeyi çalıştırın.

Kırmızı çember içine aldığım alanlar kodlarda da dikkat ederseniz benim verdiğim isimler.Çalışma kitabının adına “BatuxCalismaDosyasi “ diye vermiştik,sütunları da “SUTUN1”   ve “SUTUN2”  diye belirledik. 

Uygulamayı indirmek için tıklayınız http://rapidshare.com/files/417274753/JavaExcelUygulamasi_Write.rar

Java Excel API'leri indirmek için tıklayınız http://rapidshare.com/files/417275013/jxl.jar

Evet bir yazımın daha sonuna gelmiş bulunuyoruz.Bir sonraki makalemde görüşmek dileğiyle … 

Batuhan Düzgün

Sakarya Üniversitesi

Bilgisayar Mühendisliği

     

Currently rated 5.0 by 5 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Java

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  August 2018  >>
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

Yazıları geniş takvimde göster