Selamlar...
ASP.Net MVC kullanarak excel çıktısı almak için aşağıdaki metot kullanılabilir:
public FileContentResult MusteriListesiRaporuExcel(int ayIndex, int yil)
{
    MusteriIslemleri musteriIslemleri = new MusteriIslemleri();
    List<Musteri> lst = musteriIslemleri.GetirMusteriListesi(ayIndex, yil);
    StringBuilder sb = musteriIslemleri.List2ExcelSb(lst);
    string sFileName = "MusteriListesiRaporu_" + GenelIslemler.strTarihiGetir() + ".xls"; // strTarihiGetir metodu 20150925223500 şeklinde bitişik tarih saat bilgisi dönüyor. Dosya ismi tekil olsun diye...
    HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + sFileName);
    this.Response.ContentType = "application/vnd.ms-excel";
    this.Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
    byte[] buffer = System.Text.Encoding.GetEncoding(1254).GetBytes(sb.ToString()); // Karakter problemine göre burasu UTF8 ile denenebilir...
    return new FileContentResult(buffer, this.Response.ContentType);
}
 
Buradaki en can alıcı nokta List2ExcelSb metodu. Bu metot, kendisine gelen her türlü listeyi excel çıktısına çevirebiliyor.
1-2 sefer böyle ihtiyacım oldu ve iki rapor için de bunu ayrı ayrı metotlarda yazdım.
Sonra düşündüm ve dedim ki; öyle bir metot olsun ki, kendisine gelen listeyi hiç ayırmadan direkt excele uygun bir HTML stringe çevirsin.
İşte o metot, bu metot:
public StringBuilder List2ExcelSb<T>(List<T> liste)
{
    IList<PropertyInfo> properties = typeof(T).GetProperties().ToList();
    StringBuilder sb = new StringBuilder();
    sb.Append("<table style='1px solid black; font-family: Tahoma, Geneva, sans-serif; font-size:14px;'>");
    sb.Append("<tr>");
    foreach (var property in properties)
    {
        sb.Append("<td style='width:130px;'><b>");
        sb.Append(property.Name.ToString());
        sb.Append("</b></td>");
    }
    sb.Append("</tr>");
    foreach (var item in liste)
    {
        sb.Append("<tr style='height:20px;'>");
        foreach (var property in properties)
        {
            object propValue = property.GetValue(item, null);
            sb.Append("<td>");
            sb.Append(propValue.ToString());
            sb.Append("</td>");
        }
        sb.Append("</tr>");
    }
    sb.Append("</table>");
    return sb;
}

 
Kendisine gönderilen listenin özelliklerini(property) dolaşıyor tek tek ve bunları sütunlara kalın harflerle yerleştiriyor.
Sonra da bu özelliklerin değerlerini satır satır ekliyor tabloya.
Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Arama
  Ara
Sayfalar
Takvim
<Temmuz 2017>
PSÇPCCP
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
Bağlantılar