استخراج داده های GridView به فایل متنی در Asp.Net
شنبه 2 اسفند 1393در این مقاله میخواهیم داده هایی که در گرید ویو را مشاهده میکنیم خروجی به صورت فایل متنی بگیریم
ابتدا یک جدول با فیلد های زیر در نظر بگیرید:
اسکریپت جدول بالا به صورت زیر می باشد:
CREATE TABLE [dbo].[Employee]( [Emp_ID] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NULL, [Designation] [varchar](50) NULL, [City] [varchar](50) NULL, [State] [varchar](50) NULL, [Country] [varchar](50) NULL, CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED ( [Emp_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
سپس مقداری اطلاعات در جدول خود درج میکنیم:
سپس در صفحه Default.aspx یک گرید ویو اضافه کرده و ستون های آنرا تنظیم میکنیم:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>EXPORT Grid View To a Text File in ASP.NET C#</title> </head> <body> <form id="form1" runat="server"> <div> <table style="border: solid 15px blue; width: 100%; vertical-align: central;"> <tr> <td style="padding-left: 50px; padding-top: 20px; padding-bottom: 20px; background-color: skyblue; font-size: 20pt; color: orangered;"> EXPORT Grid View To a Text File in ASP.NET C# </td> </tr> <tr> <td style="text-align: left; padding-left: 50px; border: solid 1px red;"> <asp:GridView ID="GridViewEmployee" runat="server" AutoGenerateColumns="False" Width="90%" BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4" GridLines="Both"> <Columns> <asp:BoundField DataField="Name" HeaderText="Employee Name" /> <asp:BoundField DataField="Designation" HeaderText="Designation" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="State" HeaderText="State" /> <asp:BoundField DataField="Country" HeaderText="Country" /> </Columns> <FooterStyle BackColor="#99CCCC" ForeColor="#003399" /> <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" /> <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" /> <RowStyle BackColor="White" ForeColor="#003399" /> <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" /> </asp:GridView> </td> </tr> <tr> <td align="right"> <asp:Button ID="btnExport" Text="Export Grid View" OnClick="btnExport_Click" runat="server" /> </td> </tr> </table> </div> </form> </body> </html>
حال در صفحه Default.aspx.cs در رویداد صفحه یک تابع برای متصل کردن گرید ویو و پرکردن آن از داده های درون پایگاه داده فراخوانی میکنیم:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) this.BindGrid(); }
در تابع یک اتصال به پایگاه داده زده میشود و تمامی داده های درون جدول Employee را فراخوانی کرده ودرون DataSource گرید ریخته میشود:
private void BindGrid() { SqlConnection con = new SqlConnection(); ds = new DataSet(); con.ConnectionString = @"Data Source=INDIA\MSSQLServer2k8; Initial Catalog=EmployeeManagement; Uid=sa; pwd=india;"; SqlCommand cmd = new SqlCommand("SELECT * FROM EMPLOYEE", con); da = new SqlDataAdapter(cmd); da.Fill(ds); con.Open(); cmd.ExecuteNonQuery(); con.Close(); if (ds.Tables[0].Rows.Count > 0) { GridViewEmployee.DataSource = ds.Tables[0]; GridViewEmployee.DataBind(); } }
حال در رویداد کلیک دکمه Export Grid View کد زیر را برای تبدیل داده های گرید ویو که از پایگاه داده فراخوانی شده اند به فایل متنی بنویسید:
protected void btnExport_Click(object sender, EventArgs e) { string txtFile = string.Empty; //Adding Column Name In Text File. foreach (TableCell cell in GridViewEmployee.HeaderRow.Cells) { txtFile += cell.Text + "\t\t"; } txtFile += "\r\n"; //Adding Data Column Values in Text File foreach (GridViewRow row in GridViewEmployee.Rows) { foreach (TableCell cell in row.Cells) { txtFile += cell.Text + "\t\t"; } txtFile += "\r\n"; } Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=EmployeeData.txtFile"); Response.Charset = ""; Response.ContentType = "application/text"; Response.Output.Write(txtFile); Response.Flush(); Response.End(); }
کد کامل صفحه به شکل زیر می باشد:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { SqlDataAdapter da; DataSet ds = new DataSet(); DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) this.BindGrid(); } private void BindGrid() { SqlConnection con = new SqlConnection(); ds = new DataSet(); con.ConnectionString = @"Data Source=INDIA\MSSQLServer2k8; Initial Catalog=EmployeeManagement; Uid=sa; pwd=india;"; SqlCommand cmd = new SqlCommand("SELECT * FROM EMPLOYEE", con); da = new SqlDataAdapter(cmd); da.Fill(ds); con.Open(); cmd.ExecuteNonQuery(); con.Close(); if (ds.Tables[0].Rows.Count > 0) { GridViewEmployee.DataSource = ds.Tables[0]; GridViewEmployee.DataBind(); } } protected void btnExport_Click(object sender, EventArgs e) { string txtFile = string.Empty; //Adding Column Name In Text File. foreach (TableCell cell in GridViewEmployee.HeaderRow.Cells) { txtFile += cell.Text + "\t\t"; } txtFile += "\r\n"; //Adding Data Column Values in Text File foreach (GridViewRow row in GridViewEmployee.Rows) { foreach (TableCell cell in row.Cells) { txtFile += cell.Text + "\t\t"; } txtFile += "\r\n"; } Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=EmployeeData.txtFile"); Response.Charset = ""; Response.ContentType = "application/text"; Response.Output.Write(txtFile); Response.Flush(); Response.End(); } }
حالا میتونید برنامه خود را اجرا کنید:
- ASP.net
- 2k بازدید
- 1 تشکر