Aşağıda örneği verilen kodlarla beraber Rapor Önizlemesi alındığında üst tarafta “Excel Kaydet” butonu çıkacak ve ekranda görülen rapor hiçbir bozulma olmaksızın Excel ortamına aktarılabilecektir.
BİLGİ
Raporu Excele çıktı alırken birden fazla sheet hazırlamanız ve her sheet'de farklı veriyi bastırmanız mümkündür. Aşağıda buna uygun örnek verilmiştir.
BİLGİ
Excel ortamına rapor aktarılırken sadece Fatura Önizlemesinde görüntülenen alanlar değil istediğiniz kadar ek bilgiyi de eklemeniz mümkündür.
Rapor Tasarımını açtıktan sonra sol taraftaki menülerden “Rapor Olayları”na tıklayın.
Bunların içerisinden 2 tanesinin içerisine aşağıdaki betikler eklenir.
“Rapor Başladıktan Sonra” sekmesine eklenecek betik;
Object excel = ScriptContext.getExcel();
excel.setFileName("AYRINTILI ÖDEME TAHSİLAT LİSTESİ");
Object sheet = excel.createSheet();
Object title = sheet.createTitle(15,5); // sheet başlığının yazı boyutu ve kaç hücreyi birleştirmesi gerektiği
title.setString("CARİ LİSTESİ");
Object col = sheet.getColumn(0);
col.setCaption("Cari Kod");
col.setCharWidth(30);
col = sheet.getColumn(1);
col.setCaption("Unvan");
col.setCharWidth(70);
col = sheet.getColumn(2);
col.setCaption("Satış Personeli");
col.setCharWidth(25);
col = sheet.getColumn(3);
col.setCaption("Bakiye");
col.setCharWidth(15);
col.setDataType("number");
col = sheet.getColumn(4);
col.setCaption("B_A");
col.setCharWidth(8);
Object cari = excel.createSheet();
Object baslik = cari.createTitle(15,12);
baslik.setString("Satır Detay Bilgileri");
col = cari.getColumn(0);
col.setCaption("Cari Kodu");
col.setCharWidth(30);
col = cari.getColumn(1);
col.setCaption("Cari Açıklaması");
col.setCharWidth(70);
col = cari.getColumn(2);
col.setCaption("Vade");
col.setDataType("date");
col.setCharWidth(14);
col = cari.getColumn(3);
col.setCaption("Fatura Tarihi");
col.setDataType("date");
col.setCharWidth(14);
col = cari.getColumn(4);
col.setCaption("Belge No");
col.setCharWidth(18);
col = cari.getColumn(5);
col.setCaption("Satır Açıklaması");
col.setCharWidth(50);
col = cari.getColumn(6);
col.setCaption("İşlem Türü");
col.setCharWidth(20);
col = cari.getColumn(7);
col.setCaption("Kalan Vade");
col.setCharWidth(12);
col = cari.getColumn(8);
col.setCaption("Kalan Ödeme Tutarı");
col.setCharWidth(20);
col = cari.getColumn(9);
col.setCaption("Para Birimi");
col.setCharWidth(15);
col = cari.getColumn(10);
col.setCaption("Kur");
col.setCharWidth(10);
col = cari.getColumn(11);
col.setCaption("YPB Bakiye");
col.setCharWidth(20);
Object rapor = excel.createSheet();
Object baslik2 = rapor.createTitle(15,2);
baslik2.setString("Rapor Bilgileri");
col = rapor.getColumn(0);
col.setCaption("Rapor Tarihi");
col.setDataType("date");
col.setCharWidth(20);
col = rapor.getColumn(1);
col.setCaption("Kullanıcı Adı");
col.setCharWidth(20);
sheet.createHeader(true); // bu satır en sona yazılacak // bu satır olmazsa sütun başlıkları excele çıkmıyor.
cari.createHeader(true);
rapor.createHeader(true);
“Detay Basıldıktan Sonra” sekmesine eklenecek betik;
if(!getDictionary(0).hasKey($F{CARI_REF})){
getDictionary(0).put($F{CARI_REF},$F{CARI_REF});
Object excel = ScriptContext.getExcel();
Object sheet = excel.getSheetAt(0);
Object row = sheet.addRow();
row.cell(0).setString($F{CARI_KOD});
row.cell(1).setString($F{CARI_ACIKLAMA});
row.cell(2).setString($F{SATIS_PERSONELI});
row.cell(3).setNumber($F{BAKIYE});
row.cell(4).setString($F{B_A});
}
if(!getDictionary(1).hasKey($F{SATIR_REF})){
getDictionary(1).put($F{SATIR_REF},$F{SATIR_REF});
Object excel = ScriptContext.getExcel();
Object cari = excel.getSheetAt(1);
Object row = cari.addRow();
row.cell(0).setString($F{CARI_KOD});
row.cell(1).setString($F{CARI_ACIKLAMA});
row.cell(2).setDate($F{VADE_TARIHI});
row.cell(2).setDataType("date");
row.cell(3).setDate($V{FATURA_TARIHI});
row.cell(3).setDataType("date");
row.cell(4).setString($F{BELGE_NO});
row.cell(5).setString($F{SATIR_ACIKLAMASI});
row.cell(6).setString($F{ISLEM_TURU});
row.cell(7).setNumber($V{KALAN_VADE});
row.cell(8).setNumber($F{KAPATILMAMIS_TUTAR});
row.cell(9).setString($F{PARA_BIRIMI});
row.cell(10).setNumber($F{DOVIZ_KURU});
row.cell(11).setNumber($V{kalan_tutar_ypb});
}
if(!getDictionary(2).hasKey($V{username})){
getDictionary(2).put($V{username},$V{username});
Object excel = ScriptContext.getExcel();
Object rapor = excel.getSheetAt(2);
Object row = rapor.addRow();
row.cell(0).setString(DateUtil.format($V{report_time},"dd.MM.yyyy"));
row.cell(1).setString($V{userfullname});
}
Tarih Verilerini Excele Aktarırken
Rapor Başladıktan Sonra yazılırken ilgili sütunun tarih olduğunu belirtmek için aşağıdaki şekilde yazılır.
col = cari.getColumn(1);
col.setCaption(Vade");
col.setDataType("date");
col.setCharWidth(14);
col = cari.getColumn(2);
col.setCaption("Fatura Tarihi");
col.setDataType("date");
col.setCharWidth(14);
Daha Sonra Detay Basıldıktan Sonra aşamasında ise veri şu şekilde biçimlendirilmelidir.
row.cell(1).setDate($F{VADE_TARIHI});
row.cell(1).setDataType("date");
row.cell(2).setDate($V{FATURA_TARIHI});
row.cell(2).setDataType("date");
Bu durumda excele gönderilen veri tarih formatında aktarılacaktır."
Bu kodlarla beraber Rapor Önizlemesinde “Excel Kaydet” butonu çıkacak sütunlarda kayma ya da formatlama hatası olmadan excel raporu alabileceksiniz.