ورود / ثبت نام
0
0

خروجی گرفتن از اطلاعات دیتابیس در اکسل توسط ASP.NET

1014 بازدید
ASP.NET

ASP.NET

در این مقاله ای که براتون آماده کردم از اطلاعات دیتابیس توسط ASP.NET میتوانید خروجی اکسل بگیرید ، آموزشی بسیار ساده و کاربردی که استفاده از در پروژه های خود میتواند کیفیت کار خود را دوچندان کنید.کار بسیار ساده ای است که مرحله به مرحله آن را در ادامه باهم برسی میکنیم.آموزش در محیط ASP.NET و زبان سی شارپ است.امیدوارم در پروژه های خود از این نمونه سورس استفاه کنید.

 

همانطور که مشاهده کرده اید در اکثر پروژه هایی که دارای گزارش گیری هستند دارای خروجی فایل اکسل نیز می باشند

به همین علت می خواهیم این عمل را با asp.net  انجام دهیم :

ابتدادر پایگاه داده یک جدول به نام employee  می سازیم که دارای فیلد های زیر می باشد:

employee

employee

حالا ویژوال استدیو خود را باز کنید:

یک پروژه جدید asp.net web form  از نوع empty ایجاد کنید سپس  یک صفحه 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></title>
</head>
<body bgcolor="Silver">
 <form id="form1" runat="server">
 <br />
 <h2 style="color: #808000; font-size: x-large; font-weight: bolder;">
 Article by Vithal Wadje</h2>
 <br />
 <div>
 <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" CellPadding="6"
 ForeColor="#333333" GridLines="None">
 <AlternatingRowStyle BackColor="White" />
 <EditRowStyle BackColor="#7C6F57" />
 <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
 <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
 <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
 <RowStyle BackColor="#E3EAEB" />
 <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
 <SortedAscendingCellStyle BackColor="#F8FAFA" />
 <SortedAscendingHeaderStyle BackColor="#246B61" />
 <SortedDescendingCellStyle BackColor="#D4DFE1" />
 <SortedDescendingHeaderStyle BackColor="#15524A" />
 <Columns>
 <asp:BoundField DataField="id" HeaderText="id" />
 <asp:BoundField DataField="Name" HeaderText="Name" />
 <asp:BoundField DataField="City" HeaderText="City" />
 <asp:BoundField DataField="Address" HeaderText="Address" />
 <asp:BoundField DataField="Designation" HeaderText="Designation" />
 </Columns>
 </asp:GridView>
 <br />
 <asp:Button ID="Button1" runat="server"
 Text="Create Excel File" onclick="Button1_Click"/>
 </div>
 </form>
</body>
</html> 

حالا باید گرید ویو را پرکنیم در صفحه default.aspx.cs   یک تابع  مینویسم :


private void Bindgrid()
 {
 connection();
 query = "select *from Employee";//not recommended this i have written just for example,write stored procedure for security
 com = new SqlCommand(query, con);
 SqlDataAdapter da = new SqlDataAdapter(query, con);
 DataSet ds = new DataSet();
 da.Fill(ds);
 GridView1.DataSource = ds;
 GridView1.DataBind();
 con.Close();
 ViewState["DataTable"] = ds.Tables[0];
 }

حالا در Page_Load آنرا فراخوانی میکنیم:


protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 Bindgrid(); 

 }
 }

[/chsarp]

حالا نوبت به ساخت فایل اکسل می رسد برای اینکار یک تابع به شکل زیر مینویسیم:



public void CreateExcelFile(DataTable Excel)
 { 

 //Clears all content output from the buffer stream.
 Response.ClearContent();
 //Adds HTTP header to the output stream
 Response.AddHeader("content-disposition", string.Format("attachment; filename=C#cornerVithalWadje.xls")); 

 // Gets or sets the HTTP MIME type of the output stream
 Response.ContentType = "application/vnd.ms-excel";
 string space = ""; 

 foreach (DataColumn dcolumn in Excel.Columns)
 { 

 Response.Write(space + dcolumn.ColumnName);
 space = "\t";
 }
 Response.Write("\n");
 int countcolumn;
 foreach (DataRow dr in Excel.Rows)
 {
 space = "";
 for (countcolumn = 0; countcolumn < Excel.Columns.Count; countcolumn++)
 { 

 Response.Write(space+dr[countcolumn].ToString());
 space="\t"; 

 } 

 Response.Write("\n"); 

 }
 Response.End();
 }

سپس تابع نوشته شده در قسمت فوق را در رویداد کلیک button فراخوانی میکنیم:


protected void Button1_Click(object sender, EventArgs e)
 {
 //getting datatable from viewstate
 DataTable dt =(DataTable)ViewState["DataTable"]; 

 //calling create Excel File Method and passing dataTable
 CreateExcelFile(dt);
 } 

پس کد های صفحه  default.aspx  به شکل زیر می شود:


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.IO;
using System.Configuration;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{ 

 private SqlConnection con;
 private SqlCommand com;
 private string constr, query;
 private void connection()
 {
 constr = ConfigurationManager.ConnectionStrings["getconn"].ToString();
 con = new SqlConnection(constr);
 con.Open(); 

 }
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 Bindgrid(); 

 }
 } 

 private void Bindgrid()
 {
 connection();
 query = "select *from Employee";//not recommended this i have written just for example,write stored procedure for security
 com = new SqlCommand(query, con);
 SqlDataAdapter da = new SqlDataAdapter(query, con);
 DataSet ds = new DataSet();
 da.Fill(ds);
 GridView1.DataSource = ds;
 GridView1.DataBind();
 con.Close();
 ViewState["DataTable"] = ds.Tables[0];
 } 

 public void CreateExcelFile(DataTable Excel)
 { 

 //Clears all content output from the buffer stream.
 Response.ClearContent();
 //Adds HTTP header to the output stream
 Response.AddHeader("content-disposition", string.Format("attachment; filename=C#cornerVithalWadje.xls")); 

 // Gets or sets the HTTP MIME type of the output stream
 Response.ContentType = "application/vnd.ms-excel";
 string space = ""; 

 foreach (DataColumn dcolumn in Excel.Columns)
 { 

 Response.Write(space + dcolumn.ColumnName);
 space = "\t";
 }
 Response.Write("\n");
 int countcolumn;
 foreach (DataRow dr in Excel.Rows)
 {
 space = "";
 for (countcolumn = 0; countcolumn < Excel.Columns.Count; countcolumn++)
 { 

 Response.Write(space+dr[countcolumn].ToString());
 space="\t"; 

 } 

 Response.Write("\n"); 

 }
 Response.End();
 } 

 protected void Button1_Click(object sender, EventArgs e)
 {
 //getting datatable from viewstate
 DataTable dt =(DataTable)ViewState["DataTable"]; 

 //calling create Excel File Method and passing dataTable
 CreateExcelFile(dt);
 }
} 

کار تمام است کافی است برنامه را اجرا کنید رکورد ها را داخل گرید مشاهده میکنید و با کلیک روی دکمه میتوانید فایل اکسل را ذخیره کنید:

grid

گرید

زمانی که روی دکمه Create Excel  کلیک کنید شکل زیر را مشاهده خواهید کرد:

Excel

با کلیک روی open یا save میتوانید فایل اکسل را که حاوی رکورد های شما از بانک اطلاعاتی می باشد را ببینید:

export to excel

خروجی به اکسل

یک نکته مهم این است که فراموش نکنید در webconfig رشته اتصال خود را تنظیم کنید.

آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=11170
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
پاکان رحمانی
مطالب بیشتر
برچسب ها:

نظرات

7 نظر در مورد خروجی گرفتن از اطلاعات دیتابیس در اکسل توسط ASP.NET

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. با سلام و احترام
    با تشکر از آموزش خوبتون
    این کد مشکل فونت فارسی داره
    اگه ممکنه یک جدول با ستون و سرستون فارسی رو قرار بدین و کد نویسی رو اموزش بدین
    ممنون

    ۱

  2. برای فیلدهای فارسی nvarchar متن رو درست نمیاره. به این صورت میاره:
    † ظˆ ط±ط¶ط§غŒطھ ط´ط؛ظ„غŒ ع©ط§ط±ع©ظ†ط§ظ†

    حتی encodeHtml هم امتحال کردم
    بنظرتون چیکار میشه کرد؟؟

    لایک