Невозможно удалить гиперссылку из динамического сгенерированного HTML-кода во время экспорта в excel
Я хочу удалить гиперссылку из динамического сгенерированного HTML-кода во время экспорта в excel. Я много пробовал гуглить, но все равно не мог найти решения. мой код таков
string CompanyName = string.Empty; CompanyName = Session["CompanyName"].ToString(); CompanyName = CompanyName.Replace(" ", "_"); string FileName = CompanyName.Trim() + "-Weekly_CashFlow_Statement_" + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".xls"; HttpContext.Current.Response.AppendHeader( "Content-Disposition", "attachment; filename=" + FileName); HttpContext.Current.Response.Charset = ""; HttpContext.Current.Response.ContentType = "application/ms-excel"; this.Page.EnableViewState = false; System.IO.StringWriter tw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); tblCashFlow.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString()); HttpContext.Current.Response.End();
Что я уже пробовал:
Я перепробовал так много вещей через гугл, но до сих пор не мог этого сделать
protected void btnExportToExcel_Click(object sender, ImageClickEventArgs e) { try { string CompanyName = string.Empty; CompanyName = Session["CompanyName"].ToString(); CompanyName = CompanyName.Replace(" ", "_"); string FileName = CompanyName.Trim() + "-Weekly_CashFlow_Statement_" + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".xls"; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); HttpContext.Current.Response.Charset = ""; HttpContext.Current.Response.ContentType = "application/ms-excel"; this.Page.EnableViewState = false; System.IO.StringWriter tw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); RemoveLink(tblCashFlow); tblCashFlow.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString()); HttpContext.Current.Response.End(); } catch (Exception Ex) { throw Ex; } }
public void RemoveLink(System.Web.UI.HtmlControls.HtmlTable html) { try { foreach (System.Web.UI.HtmlControls.HtmlTableRow cell in html.Rows) { //cell.CssClass = ""; for (int i = cell.Controls.Count - 1; i >= 0; i--) { Control control = cell.Controls[i]; if (control.GetType() == typeof(System.Web.UI.HtmlControls.HtmlTableCell)) { string str = ((System.Web.UI.HtmlControls.HtmlTableCell)(control)).ID; int startind = str.IndexOf('>'); if (startind > 0) { int endindex = str.LastIndexOf("</a>"); int length = endindex < 0 ? 1 : endindex - startind; str = str.Substring(startind + 1, length - 1); cell.Controls.Remove(control); System.Web.UI.LiteralControl ctrl = new System.Web.UI.LiteralControl(); ctrl.Text = str; cell.Controls.Add(ctrl); } else { cell.Controls.Remove(control); System.Web.UI.LiteralControl ctrl = new System.Web.UI.LiteralControl(); ctrl.Text = str; cell.Controls.Add(ctrl); } } } } } catch (Exception ex) { } }
Kornfeld Eliyahu Peter
Может быть, Excel повторно создает гиперссылку при открытии файла?
Попробуйте экспортировать в CSV и посмотреть, как Excel справляется с этим...