خروجي به اكسل

mehrabadi

Member
با سلام

من خيلي دنبال اين مبحث گشتم ولي يه جواب شسته رفته پيدا نكردم.

آقا من مي خوام خروجي گريد ويو رو به يك فايل تو اكسل ارسال كنم. چه كنم.( توضيح همراه سورس كد)

با تشكر
 

MDP

Well-Known Member
سورس آماده ندارم باید بشینم بنویسم!

اگه با Linq بنویسم که مشکلی نداری؟
 

mehrabadi

Member
ممنون مي شم.

ولي اگه ساده ترين حالت برنامه نويسي رو انتخاب كنيد كه تو تمام اديتورها و همچنين سرورها بي هيچ مشكلي كاركنه خيلي بهتره
 

MDP

Well-Known Member
مثل اینکه تو دوست جان دانشجو نیستی؟

بابا امتحان داریم مثل اینکه ها!

:razz:
 

mehrabadi

Member
نه بابا جون

من هم مثل تو دانشجو هستم اما تنبلی نکردم و درسام رو تو طول ترم خوندم و الان خیالم راحته!
 

mrhamidifar

New Member
اول این کلاس رو به پروژه اضافه کن
کد:
using System;
using System.Data;
using System.Configuration;
using System.IO;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
 
public class GridViewExportUtil
{
    public static void Export(string fileName, GridView gv)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader(
            "content-disposition", string.Format("attachment; filename={0}", fileName));
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        using (StringWriter sw = new StringWriter())
        {
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            {
                Table table = new Table();
 
                if (gv.HeaderRow != null)
                {
                    GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
                    table.Rows.Add(gv.HeaderRow);
                }
                foreach (GridViewRow row in gv.Rows)
                {
                    GridViewExportUtil.PrepareControlForExport(row);
                    table.Rows.Add(row);
                }
                if (gv.FooterRow != null)
                {
                    GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
                    table.Rows.Add(gv.FooterRow);
                }
 
                table.RenderControl(htw);
 
                HttpContext.Current.Response.Write(sw.ToString());
                HttpContext.Current.Response.End();
            }
        }
    }
 
    private static void PrepareControlForExport(Control control)
    {
        for (int i = 0; i < control.Controls.Count; i++)
        {
            Control current = control.Controls[i];
            if (current is LinkButton)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
            }
            else if (current is ImageButton)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
            }
            else if (current is HyperLink)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
            }
            else if (current is DropDownList)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
            }
            else if (current is CheckBox)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
            }
            if (current.HasControls())
            {
                GridViewExportUtil.PrepareControlForExport(current);
            }
        }
    }
}
بعد برای ارسال به اکسل این کد رو تویه رویدادی که میخوای بنویس
کد:
GridViewExportUtil.Export("Statistics.xls", GridView1);
Statistics.xls اسم فایل رو هرچی دلت خواست بزار
GridView1 : به جای این ID گرید ویو رو بنویس

فکر نکنم ازاین تمیز تر چیزی باشه ؟ نه ؟
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا