Here I have created sample that exports repeater textbox to Excel.
HTML
<div>
<asp:Repeater ID="rptCustomers" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("PostalCode")%>' />
</ItemTemplate>
<SeparatorTemplate>
</SeparatorTemplate>
</asp:Repeater>
<br />
<asp:Button ID="btnExport" runat="server" Text="Export" OnClick="ExportToExcel" />
</div>
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.BindCustomers();
}
}
private void BindCustomers()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[1] { new DataColumn("Id", typeof(int)) });
dt.Rows.Add(111);
dt.Rows.Add(222);
dt.Rows.Add(333);
dt.Rows.Add(444);
dt.Rows.Add(555);
dt.Rows.Add(666);
dt.Rows.Add(777);
dt.Rows.Add(888);
dt.Rows.Add(999);
rptCustomers.DataSource = dt;
rptCustomers.DataBind();
}
protected void ExportToExcel(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=RepeaterExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
using (StringWriter sw = new StringWriter())
{
HtmlTextWriter hw = new HtmlTextWriter(sw);
foreach (RepeaterItem item in rptCustomers.Items)
{
List<Control> controls = new List<Control>();
foreach (Control control in item.Controls)
{
controls.Add(control);
}
foreach (Control control in controls)
{
switch (control.GetType().Name)
{
case "TextBox":
item.Controls.Add(new Literal { Text = (control as TextBox).Text });
break;
}
item.Controls.Remove(control);
}
}
rptCustomers.RenderControl(hw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();
}
}
Screenshot
