Selamlar...
MVC ile ExtJs kullanarak excel çıktısı alma işlemine http://zamkinos.net/blog/Posts.aspx?PostID=5 yazımızda değinmiştik.
Kabaca tarif etmek gerekirse; js dosyamızda yazdığımız adresi Controller sınıfının içinde tanımladığımızda çağırabiliyorduk.
Web Form'da da WebMethod tanımlayarak istemci tarafından sunucu tarafındaki metotlara erişebiliyoruz.
Ancak iş excel'den çıktı almaya geldiğinde Web Method işimizi çözmüyor.
İnternette araştırdığım yerlerin tümündeki çözümler işe yaramadı ve bu excel çıktısı işini bir aspx sayfası yaparak çözme yoluna gittim.
Javascript tarafında bir form oluşturup, parametrelerimizi ekliyoruz. Aşağıdaki fonksiyonu bir excele çıktı butonunun click olayında tetikleyebiliriz.
    function formuPostalaExcel() {
        var form = new Ext.form.Panel({});
        form.getForm().submit({
            timeout: 120000,
            hidden: true,
            standardSubmit: true,
            url: 'ExcelExport.aspx',
            params: {
                param1: Ext.getCmp('txtParam1').getValue(),
                param2: Ext.getCmp('txtParam2').getValue(),
                param3: Ext.getCmp('txtParam3').getValue(),
                param4: Ext.getCmp('txtParam4').getValue(),
                param5: Ext.getCmp('txtParam5').getValue()
            },
            failure: function (form, action) {
                alert(action);
            }
        });
    }
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ExcelCikti
{
    public partial class ExcelExport : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string param1 = Request.Params["param1"].ToString();
            string param2 = Request.Params["param2"].ToString();
            string param3 = Request.Params["param3"].ToString();
            string param4 = Request.Params["param4"].ToString();
            string param5 = Request.Params["param5"].ToString();
            List<Musteri> lst = musterileriGetir(param1, param2, param3, param4, param5);
            StringBuilder sb = GenelIslemler.List2ExcelSb(lst); // http://zamkinos.net/blog/Posts.aspx?PostID=5 
            string sFileName = "MusteriListesi_" + GenelIslemler.strTarihiGetir() + ".xls";
            Response.AppendHeader("content-disposition", "attachment;filename=" + sFileName);
            Response.ContentType = "application/ms-excel";
            Response.ContentEncoding = Encoding.Unicode;
            Response.BinaryWrite(Encoding.Unicode.GetPreamble());
            Response.ContentType = "application/vnd.ms-excel";
            Response.Write(sb.ToString());
            Response.End();
        }
        private List<Musteri> musterileriGetir(string param1, string param2, string param3, string param4, string param5)
        {
            VeritabaniIslemleri vtIslem = new VeritabaniIslemleri();
            DataTable dtMaddeler = vtIslem.ReturnDataTable("SELECT Adi, No FROM Musteri"); // parametreler de eklenecek duruma göre.
            List<Madde> lst = new List<Madde>();
            foreach (DataRow dr in dtMaddeler.Rows)
            {
                lst.Add(new Musteri()
                {
                    Adi = dr["Adi"].ToString(),
                    No = dr["No"].ToString()
                });
            }
            return lst;
        }
    }
}
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: *