Asp.net 从repeater导出到excel
我已经能够填充一个转发器,但我唯一的问题是将其导出到excel工作表。 excel文件中没有显示任何数据。 我的想法是,由于我单击导出按钮时出现了一些回发,中继器上的数据被删除或其他什么。 代码如下:Asp.net 从repeater导出到excel,asp.net,repeater,Asp.net,Repeater,我已经能够填充一个转发器,但我唯一的问题是将其导出到excel工作表。 excel文件中没有显示任何数据。 我的想法是,由于我单击导出按钮时出现了一些回发,中继器上的数据被删除或其他什么。 代码如下: Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=GridViewEx
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
Table tb = new Table();
TableRow tr1 = new TableRow();
TableCell cell1 = new TableCell();
cell1.Controls.Add(Repeater1);
tr1.Cells.Add(cell1);
tb.Rows.Add(tr1);
tb.RenderControl(hw);
//style to format numbers to string
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
Response.Clear();
Response.Buffer=true;
Response.AddHeader(“内容处置”,
“附件;文件名=GridViewExport.xls”);
响应。Charset=“”;
Response.ContentType=“application/vnd.ms excel”;
StringWriter sw=新的StringWriter();
HtmlTextWriter hw=新的HtmlTextWriter(sw);
Table tb=新表();
TableRow tr1=新的TableRow();
TableCell cell1=新的TableCell();
cell1.Controls.Add(Repeater1);
tr1.Cells.Add(cell1);
tb.Rows.Add(tr1);
tb.渲染控制(hw);
//将数字格式化为字符串的样式
字符串样式=@“.textmode{mso数字格式:\@;}”;
回应。写作(风格);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
对于以Excel格式导出数据,我建议使用库而不是编写字符串
EPPlus是一个.net库,用于读取和写入Excel 2007/2010文件
使用OpenOfficeXML格式(xlsx)
EPPlus支持:单元格范围、单元格样式(边框、颜色、填充、字体、,
编号、路线)、图表、图片、形状、注释、表格、,
保护、加密、数据透视表、数据验证
我认为必须将“Repeater1”和表“tb”附加到页面(Page.Controls.Add(tb))。
尝试:
- 将控件渲染为字符串var rendered=RenderControlToString(tb)李>
- 然后清除响应response.clear()李>
- 然后写入呈现的字符串响应
public static string RenderControlToString(Control c)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htmlWriter = new HtmlTextWriter(sw);
c.RenderControl(htmlWriter);
sw.Close();
htmlWriter.Close();
return sb.ToString();
}