آموزش خروجی گرفتن از لیست با فرمت Excel در Asp.Net
آموزش خروجی گرفتن از لیست با فرمت Excel در Asp.Net
در این پست می خواهیم چگونه دریافت خروجی از لیست ها در Asp.Net با فرمت اکسل را آموزش دهیم.
نمایش دادهای دریافتی روی وب سایت به فرمت های مختلف به جز نمایش به صورت html که روی مرورگرها به نمایش در می آید یکی از پرکاربردترین قسمت ها در وب سایت ها می باشد. خروجی داده ها به فرمت pdf یا word یا excel و ... از جمله فرمت هایی است که کاربرد آن روی وب سایت ها با زبان Asp.Net به طور زیادی مورد استفاده قرار می گیرد. امروز می خواهیم یکی از این فرمت ها یعنی اکسل را با هم بیاموزیم.
ابتدا یک پروژه از نوع Asp.Net با نام Excel_Grid ایجاد می کنیم.
در ادامه یک پایگاه داده به صورت زیر ایجاد می کنیم.
سپس یک فرم با نام Excel_Grid ایجاد می کنیم تا لیستی روی آن به نمایش بگذاریم و امکانی فراهم کنیم تا خروجی مورد نظر را از لیست بگیریم .
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None"> <AlternatingRowStyle BackColor="White" /> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="Checkbox1" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="کدمشتری"> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("id") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="نام و نام خانوادگی"> <EditItemTemplate> <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("name") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Bind("name") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="محل شرکت"> <EditItemTemplate> <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("city") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label3" runat="server" Text='<%# Bind("city") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> <SortedAscendingCellStyle BackColor="#FDF5AC" /> <SortedAscendingHeaderStyle BackColor="#4D0000" /> <SortedDescendingCellStyle BackColor="#FCF6C0" /> <SortedDescendingHeaderStyle BackColor="#820000" /> </asp:GridView> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="خروجی به صورت اکسل" />
سپس برای رویداد کلیک خرجی اکسل باید کد نویسی لازم را انجام دهیم پس وارد صفحه کلاینت شده و فضای نام های زیر را وارد می کنیم.
using System.Data; using System.Data.SqlClient; using System.IO; using System.Text; using iTextSharp.text; using iTextSharp.text.html; using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf;
برای رویداد کلیک کد زیر را می نویسیم تا بتوانیم خروجی اکسل بگیریم.
protected void Button1_Click(object sender, EventArgs e) { bool isselected = false; foreach (GridViewRow gvrow in GridView1.Rows) { CheckBox chck = gvrow.FindControl("Checkbox1") as CheckBox; if (chck != null && chck.Checked) { isselected = true; break; } } if (isselected) { GridView grdxport = GridView1; grdxport.Columns[0].Visible = false; foreach (GridViewRow gvrow in GridView1.Rows) { grdxport.Rows[gvrow.RowIndex].Visible = false; CheckBox chck = gvrow.FindControl("Checkbox1") as CheckBox; if (chck != null && chck.Checked) { grdxport.Rows[gvrow.RowIndex].Visible = true; } } Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; StringWriter swr = new StringWriter(); HtmlTextWriter htmlwtr = new HtmlTextWriter(swr); grdxport.RenderControl(htmlwtr); Response.Output.Write(swr.ToString()); Response.End(); } }
نکته : با چک باکس سطرهای مورد نظر را در یک حلقه به هر تعداد که بخواهیم انتخاب می کنیم و سپس خروجی را با فرمت xls تولید می نماییم.
سپس نیاز است تا به پایگاه داده متصل بشویم و داده های مورد نظر را روی لیست به نمایش بگذاریم.
public void refreshdata() { SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd = new SqlCommand("select * from tbl_data", con); SqlDataAdapter sda = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); sda.Fill(dt); GridView1.DataSource = dt; GridView1.DataBind(); }
در آخر هم کافی است تا کلاس لازم برای ایجاد فرمت مورد نظر را به رفرنس پروژه اضافه کنیم.
میتوانید رفرنس را از این قسمت دانلود کنید .
نتیجه حاصل شده :
نظر / سوال