Create Excel File With HtmlTextWriter Class
16-06-2016C# Codes
private void ExportGridToExcel()
{
Response.Clear();
Response.Buffer = true;
Response.ClearContent();
Response.ClearHeaders();
string fileName = "Devlet_Personel_Baskanligi_"
+ DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
StringWriter strwritter = new StringWriter();
HtmlTextWriter htmltextwrtter = new HtmlTextWriter(strwritter);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
StringWriter sw = new StringWriter();
var hw = new HtmlTextWriter(sw);
form1.RenderControl(hw);
WriteTsv(bolKadros, htmltextwrtter);
Response.Write(strwritter.ToString());
Response.End();
}
static void WriteTsv<T>(IEnumerable<T> data, TextWriter output)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.DisplayName); // header
output.Write("\t");
}
output.WriteLine();
foreach (T item in data)
{
foreach (PropertyDescriptor prop in props)
{
if (prop.Converter != null)
output.Write(prop.Converter.ConvertToString(prop.GetValue(item)));
output.Write("\t");
}
output.WriteLine();
}
}
ASPX File
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="DevletPersonelBaskanligiWebServis.Index" EnableEventValidation="false" %>
<!--RegisterForEventValidation can only be called during Render(); hatasinin cozumu olarak yukarida EnableEventValidation="false" eklendi -->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnSend" OnClick="btnSend_OnClick" runat="server" Text="Gönder" />
<asp:Button ID="btnSaveToExcel" OnClick="btnSaveToExcel_OnClick" runat="server" Text="Excel Dosyası Oluştur" />
<br />
<asp:GridView ID="grdAllValues" runat="server" AllowPaging="true" PageSize="100" OnPageIndexChanging="grdAllValues_OnPageIndexChanging"></asp:GridView>
</div>
</form>
</body>
</html>