ذخیره GridView به اکسل بر روی دیسک سرور با استفاده از Asp.net
با سلام در این مقاله توضیح خواهیم داد که کنترل ASP.Net GridView را روی دیسک سرور به صورت جداول اکسل با استفاده از ASP.Net انجام دهیم.
کد HTML
در Markup زیرکنترل HTML،GridView ساده و یک دکمه ASP.Net برای ذخیره GridView به اکسل بر روی دیسک سرور قرار دارد .
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<br>
<asp:Button ID="btnSave" runat="server" Text="Save to Excel" OnClick="btnSave_Click" />
</form>
فضاهای نام
برای انجام این کار، شما باید فضای نامهای زیر را وارد کنید.
C #
using System.Data;
using System.IO;
VB.Net
Imports System.Data
Imports System.IO
اتصال GridView
در کد زیر کنترل ASP.Net GridView را با یک datatable مرتبط میکنیم.
C #
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("City");
dt.Rows.Add();
dt.Rows.Add();
dt.Rows.Add();
dt.Rows[0]["Name"] = "John Smith";
dt.Rows[0]["City"] = "California";
dt.Rows[1]["Name"] = "Andrew Clark";
dt.Rows[1]["City"] = "Tokio";
dt.Rows[2]["Name"] = "Mitchell Doe";
dt.Rows[2]["City"] = "Dubai";
GridView1.DataSource = dt;
GridView1.DataBind();
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim dt As New DataTable()
dt.Columns.Add("Name")
dt.Columns.Add("City")
dt.Rows.Add()
dt.Rows.Add()
dt.Rows.Add()
dt.Rows(0)("Name") = "John Smith"
dt.Rows(0)("City") = "California"
dt.Rows(1)("Name") = "Andrew Clark"
dt.Rows(1)("City") = "Tokio"
dt.Rows(2)("Name") = "Mitchell Doe"
dt.Rows(2)("City") = "Dubai"
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
ذخیره GridView به عنوان جدول اکسل بر روی دیسک سرور
هنگامی که GridView با داده ها متصل می شود، اکنون کد را برای ذخیره آن به عنوان فایل اکسل روی دیسک سرور بنویسیم. از این رو بر روی رویداد کلیک کننده دکمه Save کد زیر را نوشته ایم.
C #
protected void btnSave_Click(object sender, EventArgs e)
{
string path = Server.MapPath("~/Sheets/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
StreamWriter writer = File.AppendText(path + "GridView.xls");
GridView1.RenderControl(hw);
writer.WriteLine(sw.ToString());
writer.Close();
}
}
}
VB.Net
Protected Sub btnSave_Click(sender As Object, e As EventArgs)
Dim path As String = Server.MapPath("~/Sheets/")
If Not Directory.Exists(path) Then
Directory.CreateDirectory(path)
End If
Using sw As New StringWriter()
Using hw As New HtmlTextWriter(sw)
Dim writer As StreamWriter = File.AppendText(path & "GridView.xls")
GridView1.RenderControl(hw)
writer.WriteLine(sw.ToString())
writer.Close()
End Using
End Using
End Sub
در بالا ابتدا بررسی می کنیم که آیا دایرکتوری که در آن اکسل هیره شده است یا نه، اگر نبود , GridView را به عنوان HTML ارائه می دهیم و سپس با استفاده از کلاس StreamWriter آن را به دیسک ذخیره می کنیم .
در حین خروج شما ممکن است خطای زیر را دریافت کنید
Server Error in '/ASP.Net' Application.
Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server.
به این ترتیب برای حل آن شما نیاز دارید که Control 'GridView1' از نوع 'GridView' را در داخل تگ فرم با runat = server قرار دهید.