PL/SQL EXCEL OLUŞTURMA ve MAIL OLARAK GÖNDERME

Share Button

Merhaba,

PL/SQL kullanarak UTL_FILE standart paketi ile XML oluşturup Excel ile açma imkanı mevcuttur. Ancak sadece XLS dosyaları oluşturulabilinir. 2010 Destekli Excel dosyaları oluşturmak için Java (Apache POI) gibi daha geniş bir programlama dili kullanılmalıdır. Bu örnekte oluşturacağımız Excel dosyasını bir mail sunucusu üzerinden mail olarak da göndereceğiz. Mail gönderebilmek için daha önceden yazılmış olan UTL_TCP kullanarak mail gönderen hazır bir paket kullanacağız. Paketi aşağıdaki link’ten download edebilirsiniz.

XX_MAIL_PACKAGE

Paketi derlerken pks spec dosyası içinde tanımlanan global değişkenlerin kendi mail domain ve smtp portunuza uygun olarak değiştirilmesi gerekmektedir.

Gerekli değişiklik yapıldıktan sonra son olarak mail adreslerini tutacak olan custom bir varchar2 collection objesi aşağıdaki kodla yaratılır.

Yukarıdaki işlemler tamamlandıktan sonra mail paketi uygun ortamda derlenir.

Bu aşamada örnek için kullanacağımız bir Custom tablo, sequence, directory ve insert scriptleri için aşağıdaki kodu kullanabilirsiniz. Directory için kendi lokal ortamınızda veya kodu çalıştırdığınız sunucuda uygun bir dizin belirleyiniz. Bu dizin excel dosyanızın oluşacağı dizin olacaktır.

Excel dosyasını oluşturmak ve mail olarak göndermek için yeni bir PL/SQL paketi yaratılır. Spec dosyasında 8 adet prosedür ve 1 adet global değişken yer almaktadır.

l_directory daha önce oluşturduğumuz dosyanın oluşacağı lokal dizindir. p_start prosedürü diğer prosedürleri çağırarak excel oluşturma işlemini ve en sonda da mail gönderme işlemini yapan prosedürdür.

Paketin Body’si için aşağıdaki kodu derleyebilirsiniz;

Daha sonra SQL’i çalıştırarak verileri içerisine aynı hizada oluşturur.

Excel dosyasını oluştururken hücreler için koşul bazlı stil belirleyebilirsiniz. Bu örnekte maaşı 4500’den büyük olan kişiler için arka plan turuncu yapılmaktadır. Bunun için set_style prosedürü içerisinde oluşturulan “bgColor” stili kullanılır.

Son olarak mail göndermek için daha önce oluşturduğumuz XX_MAIL_PACKAGE paketinin yardımıyla Excel’i ek olarak gönderen bir mail p_send_mail prosedürü içerisinde hazırlanır.

Sonuç:

Mail

Mail

Mail

Mail

Excel