Asp.Net Core ClosedXml Kullanımı

Merhaba arkadaşlar, bu yazımızda Asp.Net Core üzerinde ClosedXML kütüphanesi ile Excel Export işlemi nasıl yapılır birlikte inceliyor olacağız.

Daha önce excel ile ilgili çeşitli geliştirmeler yapmıştım. Ancak açıkçası oledb ile kullanılması vs gibi nedenlerden çok içime sinmiyordu. Yine excel ile ilgili geliştirme yapmam gerekince bu defa ClosedXml kütüphanesini tercih ettim. Açıkçası çokta memnun kaldım resim işleminden, biçimlendirme gibi bir çok işleme olanak veriyor. Örneğimizde aşağıdaki gibi bir öğrenci listesini excel çıktısı olarak ele alıyor olacağız. Dilerseniz başlayalım.

1.ClosedXml kütüphanesini indirme

Projemiz açıldıktan sonra projeye sağ tıklayarak Manage Nuget Packages seçeneği tıklanır. Nuget’ tan ClosedXml paketi projeye dahil edilir.

2.Öğrenci modelini ve öğrenci listesini getiren metodu oluşturma

public class OgrenciModel
{
    public int OgrenciNo { get; set; }
    public string AdSoyad { get; set; }
}
    private List<OgrenciModel> GetOgrenciList()
    {
        List<OgrenciModel> ogrencis = new List<OgrenciModel>
        {
         new OgrenciModel { OgrenciNo = 1, AdSoyad = "Ali Mutlu"},
         new OgrenciModel { OgrenciNo = 2, AdSoyad = "Ceren Kaya"},
         new OgrenciModel { OgrenciNo = 3, AdSoyad = "Mehmet Çekirdek"},
         new OgrenciModel { OgrenciNo = 4, AdSoyad = "Hakan Taşçı"},
         new OgrenciModel { OgrenciNo = 5, AdSoyad = "Gizim Gülenyüz" },
         new OgrenciModel { OgrenciNo = 6, AdSoyad = "Hasan Özgür" }

        };
        return ogrencis;
    }

3.Görsele uygun excel dosyasının hazırlanması ve excel dosyasını indirilmesi metodunun oluşturulması

  • workbook adında örnek tanımlaması yapılır.
  • workbook.Worksheets.Add ile çalışma dosyasına ad verilir.
  • workSheet.Cell(1, 1).Value ile hücreye değer verilir.
  • workSheet.Cell(1, 1).Style.Font.Bold = true ile ilgili hücredeki yazı kalınlaştırılır.
  • Tarih formatını gösterme ise string ifadeden biraz daha farklıdır. Bunun içinde workSheet.Cell(2, 2).SetValue<string>(Convert.ToString(DateTime.Now)); şeklinde kullanmamız gerekmektedir.
  • return file ile dosyanın tipini ve adını belirleyerek excel dosyamızı oluşturuyoruz.
        using (var workbook = new XLWorkbook())
        {
            var workSheet = workbook.Worksheets.Add("Öğrenci Listesi");

            workSheet.Cell(1, 1).Value = "Sınıf Adı";
            workSheet.Cell(1, 1).Style.Font.Bold = true;
            workSheet.Cell(1, 2).Value = "12/A";

            workSheet.Cell(2, 1).Value = "Oluşturma Tarihi";
            workSheet.Cell(2, 1).Style.Font.Bold = true;
            workSheet.Cell(2, 2).SetValue<string>(Convert.ToString(DateTime.Now));

            workSheet.Cell(3, 1).Value = "Öğrenci No";
            workSheet.Cell(3, 2).Value = "Ad Soyad";

            for (int i = 1; i <= 2; i++)
            {
                workSheet.Cell(3, i).Style.Font.Bold = true;
            }

            int ogrenciSayac = 4;
            foreach (var item in GetOgrenciList())
            {
                workSheet.Cell(ogrenciSayac, 1).Value = item.OgrenciNo;
                workSheet.Cell(ogrenciSayac, 2).Value = item.AdSoyad;
                ogrenciSayac++;
            }

            using (var stream = new MemoryStream())
            {
                workbook.SaveAs(stream);
                var content = stream.ToArray();
                return File(
                            content,
                            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                            "12A Sınıfı OgrenciListesi.xlsx"
                            );
            }
        }

4.Excel dosyasını bilgisayara indirme-export işlemi

Buraya kadar dosyamızı oluşturduk. Şimdi de ilgili urle istekte bulunarak bu dosyamızı bilgisayara indirme işlemini yapıyoruz. Bunun içinde view tarafında butonumuza tıkladığımızda çalışmasını istediğimiz functionu aşağıdaki şekilde yazıyoruz.

function downloadOgrenciList() {
    window.open("/Home/ExportExcelOgrenciList");
}

GitHub Linki

https://github.com/MehmetAkifVurucu/AspNetCoreClosedXml

Bir sonraki yazıda görüşmek üzere.

Related Post

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir