ASP.NET ile GridView’ deki Verileri Word ve Excel Dosyasına Aktarma

Konuyu Okuyanlar (0 kayıtlı üye )

sdkbyrm

olwα.ɴeт
Üyelik Tarihi
23 Aralık 2020
Mesajlar
813
Beğeniler
1
Puanı
3
Ticaret: 0 / 0 / 0
Bu makalemizde ASP.NET ile veri çekmiş olduğumuz GridView kontrolündeki verilerin Word Dosyasına ve Excel Dosyasına aktarılmasını gerçekleştireceğiz. Örneğimizde SQL de bulunan veritabanındaki verileri GridView içine çekeceğiz. Daha sonra Word’e Aktar ve Excel’e Aktar buttonlarıyla GridView’de bulunan verilerin transferini sağlayacağız.


Sayfamızı aşağıdaki gibi 1 adet Gridview,2 adet button ekleyerek oluşturuyoruz.

1608737316433.png

GridView kontrolündeki biçimlendirmeleri ve diğer yerleşimler görebileceğiniz default.aspx dosyamıza ait kodları inceleyebilirsiniz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:GridView ID="GridView1" runat="server" BackColor="#DEBA84"
BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
CellPadding="3" CellSpacing="2">
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True"
ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True"
ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="EXCEL" Width="94px" />

&nbsp;
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="WORD" Width="86px" />

</div>
</form>
</body>
</html>


Kodlarımızı yazmaya başlıyoruz. Öncelikle aşağıdaki kütüphaneleri projemize dahil ediyoruz.


1
2
3
4
5
6

using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;


Örneğimizde SQL Server’ da bulunan kutuphane veritabanında ogrenci isimli tabloyu kullanıyoruz.

Sayfa yuklendiğinde GridView içini dolduracak kodlarımızı Page_Load bölümüne ekliyoruz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
string cs = "Server=.;Initial Catalog=kutuphane;Integrated Security=SSPI";
using (SqlConnection con = new SqlConnection(cs))
{
SqlDataAdapter da = new SqlDataAdapter("SELECT *FROM ogrenci WHERE ogrno<11",con);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
}


Şimdi de Verilerin Excel dosyasına aktarılmasını sağlayacak kodlarımızı yazalım.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

protected void Button1_Click(object sender, EventArgs e)//Excel
{
Response.ClearContent();
Response.AppendHeader("content-disposition", "attachement;filename=ogrenciListe.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter ht = new HtmlTextWriter(sw);
GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");
foreach (TableCell tableCell in GridView1.HeaderRow.Cells)
{
tableCell.Style["background-color"] = "#A55129";
}
foreach (GridViewRow gridViewRow in GridView1.Rows)
{
gridViewRow.BackColor = System.Drawing.Color.White;
foreach (TableCell gridViewRowTableCell in gridViewRow.Cells)
{
gridViewRowTableCell.Style["background-color"] = "#FFF7E7";
}
}
GridView1.RenderControl(ht);
Response.Write(sw.ToString());
Response.End();
}


Word dosyasına veri aktarımını sağlayacak kodlarımızı diğer butonumuza ekleyeceğiz. Buradaki kodları incelediğiniz zaman yukarıda oluşturmuş olduğumuz Excel dosyasına veri aktarımı yapan kodlarla aynı olduğunu, sadece dosya uzantısı ve dosya tipinin değiştirildiğini göreceksiniz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

protected void Button2_Click(object sender, EventArgs e)
{ //Word Aktarımı
Response.ClearContent();
Response.AppendHeader("content-disposition", "attachement;filename=ogrenciListe.doc");
Response.ContentType = "application/word";
StringWriter sw = new StringWriter();
HtmlTextWriter ht = new HtmlTextWriter(sw);
GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");
foreach (TableCell tableCell in GridView1.HeaderRow.Cells)
{
tableCell.Style["background-color"] = "#A55129";
}
foreach (GridViewRow gridViewRow in GridView1.Rows)
{
gridViewRow.BackColor = System.Drawing.Color.White;
foreach (TableCell gridViewRowTableCell in gridViewRow.Cells)
{
gridViewRowTableCell.Style["background-color"] = "#FFF7E7";
}
}
GridView1.RenderControl(ht);
Response.Write(sw.ToString());
Response.End();
}


Kodlarımızı tamamlamış olduk. Sadece ufak bir ayrıntı kaldı. Bu şekilde kodlarımızı çalıştırdığımız zaman;

‘GridView’ türündeki ‘GridView1’ denetimi runat=server değerine sahip bir form etiketine yerleştirilmelidir.



hatasını alacağız. Bu hatanın çözümünü ise aşağıdaki kodları ekleyerek sağlayacağız.


1
2
3
4
5
6

public override void VerifyRenderingInServerForm(Control control)
{

}


Bu kodu da ekledikten sonra sayfamızı çalıştırabiliriz. Word ve Excel Butonlarına bastığımız zaman dosyaların indirildiğini göreceğiz.
1608737342872.png
Excel ve Word dosyalarının içeriğine bakacak olursak GridView kontrolündeki verilerin aktarıldığını göreceğiz.


Word Dosyası:
1608737353589.png
Excel Dosyası:
1608737364562.png
default.aspx.cs kodlarının tamamı şu şekilde olacaktır.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

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;
using System.Configuration;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
string cs = "Server=.;Initial Catalog=kutuphane;Integrated Security=SSPI";
using (SqlConnection con = new SqlConnection(cs))
{
SqlDataAdapter da = new SqlDataAdapter("SELECT *FROM ogrenci WHERE ogrno<11",con);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();

}
}
}

protected void Button1_Click(object sender, EventArgs e)//Excel
{
Response.ClearContent();
Response.AppendHeader("content-disposition", "attachement;filename=ogrenciListe.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter ht = new HtmlTextWriter(sw);
GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");
foreach (TableCell tableCell in GridView1.HeaderRow.Cells)
{
tableCell.Style["background-color"] = "#A55129";
}
foreach (GridViewRow gridViewRow in GridView1.Rows)
{
gridViewRow.BackColor = System.Drawing.Color.White;
foreach (TableCell gridViewRowTableCell in gridViewRow.Cells)
{
gridViewRowTableCell.Style["background-color"] = "#FFF7E7";
}
}

GridView1.RenderControl(ht);
Response.Write(sw.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{

}


protected void Button2_Click(object sender, EventArgs e)
{ //Word Aktarımı
Response.ClearContent();
Response.AppendHeader("content-disposition", "attachement;filename=ogrenciListe.doc");
Response.ContentType = "application/word";
StringWriter sw = new StringWriter();
HtmlTextWriter ht = new HtmlTextWriter(sw);
GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");
foreach (TableCell tableCell in GridView1.HeaderRow.Cells)
{
tableCell.Style["background-color"] = "#A55129";
}
foreach (GridViewRow gridViewRow in GridView1.Rows)
{
gridViewRow.BackColor = System.Drawing.Color.White;
foreach (TableCell gridViewRowTableCell in gridViewRow.Cells)
{
gridViewRowTableCell.Style["background-color"] = "#FFF7E7";
}
}

GridView1.RenderControl(ht);
Response.Write(sw.ToString());
Response.End();
}
}
 
Üst Alt