Ref:
HTML
<asp:Panel runat="server" ID="Panel1">
<asp:Label Text=" Exporting Image to Excel " runat="server" />
<br />
<asp:Image ID="Image2" runat="server" />
</asp:Panel>
<br />
<asp:Button ID="btnExport" runat="server" Text="Export" OnClick="Export" />
C#
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[1] { new DataColumn("Item") });
dt.Rows.Add(GetUrl("Images/AspForumsLogo.jpg"));
this.Image2.ImageUrl = dt.Rows[0]["Item"].ToString();
}
protected void Export(object sender, EventArgs e)
{
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=test.xls;");
using (StringWriter stringWrite = new StringWriter())
{
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
this.Panel1.RenderControl(htmlWrite);
string headerTable = @"<Table><tr><td></td></tr></Table>";
Response.Write(headerTable);
Response.Write(stringWrite.ToString());
Response.End();
}
}
protected string GetUrl(string imagepath)
{
string[] splits = Request.Url.AbsoluteUri.Split('/');
string url = string.Empty;
if (splits.Length >= 2)
{
url = splits[0] + "//";
for (int i = 2; i < splits.Length - 1; i++)
{
url += splits[i];
url += "/";
}
}
return url + imagepath;
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
Screenshot
