Merhabalar arkadaşlar,
Asp.net Mvc de excelle aktarmak için internette bir çok örnek var. Bunların hemen hemen hepsi gridview den direk excelle aktarmayı vermişler, ben grid den değilde kendi tablo yapınızla nasıl excelli şekillendirip aktarabileceğinizi göstereceğim.
Öncelikle Urunler diye bir vtnizde bir tablo ve bir class ınızın olduğunu varsayarak öncelikle tüm listeyi bir çekelim
verileri foreach ile istediğim tablo özelliklerine göre tr ve td taglarını ekleyerek çekiyorum.
Ben biraz renkli ve ara boşlukları da olsun diye genişlik ve yükseklikte veriyorum bu şekilde excell listemde renkli oluşacaktır.
string urunler = "";
foreach (var item in Urun.TumUrunler())
{
urunler += "<tr>" +
"<td style='text-align:center; background-color: white; color: black;' height='30' width='250'>" + item.Urun_id + "</td>" +
"<td style='text-align:center; background-color: #f4f4f4; color: black;' height='30' width='250'>" + item.Urun_Ad + "</td>" +
"<td style='text-align:center; background-color: white; color: black;' height='30' width='100'>" + item.Urun_Fiyat + "</td>" +
"<td style='text-align:center; background-color: white; color: black;' height='30' width='100'>" + item.Urun_Resim + "</td>" +
"<td style='text-align:center; background-color: #f4f4f4; color: black;' height='30' width='100'>" + item.Urun_Kategori_id + "</td>"+
"</tr>";
}
Tüm ürünlerimizi
urunler adında bir string değere aktarmış olduk.
Şimdi ürün başlıklarını ekleyelim ve excell de neyin verisini çektiğimize ilişkin başlık ekleyelim
StringBuilder icerik = new StringBuilder();
icerik.Append("<table border = '1' width = '1480' > " +
"<tr><td colspan='5' height='100' style='text-align:center; font-weight: bold; background-color: black; color: white; font-size:22px; width:1480px'>" + DateTime.Now.ToString() + "<br/>Ürün Fiyat Listesi</td></tr><tr><td height='20' style='text-align:center; font-weight: bold; background-color: black; color: white; font-size:22px; width:1480px' colspan='5'></td></tr>" +
"<tr>" +
"<td style='text-align:center; font-weight: bold; background-color: yellow; color: black;' height='30' width='250' valign='center'>Ürün id</td>" +
"<td style='text-align:center; font-weight: bold; background-color: yellow; color: black;' height='30' width='250' valign='center'>Ürün Adı</td>" +
"<td style='text-align:center; font-weight: bold; background-color: yellow; color: black;' height='30' width='100' valign='center'>Ürün Fiyatı</td>" +
"<td style='text-align:center; font-weight: bold; background-color: yellow; color: black;' height='30' width='100' valign='center'>Ürün Resmi</td>" +
"<td style='text-align:center; font-weight: bold; background-color: yellow; color: black;' height='30' width='100' valign='center'>Kategorisi</td>" +
"</tr>");
şimdi gelen verileri de ekleyelim ve excell için ayarları yapalım
icerik.Append(urunler); // getirdiğimiz ürünleri de ekledik
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=DenemeExcel.xls"); // excell dosyasının adı ve yolu
Response.ContentType = "application/ms-excel";
Response.Charset = "windows-1254"; // Türkçe karakter seti
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254"); // İçerik yani gelen verilerde Türkçe karakter seti
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("windows-1254"); // Üst başlıklarda ki Türkçe karakter seti
StringWriter objStringWriter = new StringWriter(icerik); // Tüm excell şablonumuzu yüklüyoruz
HtmlTextWriter objHtmlTextWriter = new HtmlTextWriter(objStringWriter);
Response.Output.Write(objStringWriter.ToString());
Response.Flush();
Response.End();
hepsi bu kadar..
iyi çalışmalar.