在网站中查看ASPX时,我得到了一个单元格中几乎没有文本的表格,例如:
tab.Rows[1].Cells[1].innerHtml = "Booked :"(在许多行和单元格中,但每个单元格中有不同的文本)
现在我只想单击一个按钮,表中的数据将被下载到一个Excel文件中。
表ID :页签
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Table tbl = new Table();
TableRow tr = new TableRow();
TableCell tcel = new TableCell();
tcel.Text = "id";
tr.Cells.Add(tcel);
TableCell tcel1 = new TableCell();
tcel1.Text = "id1";
tr.Cells.Add(tcel1);
tab.Rows.Add(tr);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string filename = "ExportExcel.xls";
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
//DataGrid dgGrid = new DataGrid();
//dgGrid.DataSource = tbl;
//dgGrid.DataBind();
//Get the HTML for the control.
tab.RenderControl(hw);
//Write the HTML back to the browser.
//Response.ContentType = application/vnd.ms-excel;
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
this.EnableViewState = false;
Response.Write(tw.ToString());
Response.End();
}已使用watraplion回答进行修改,但仍未回答..以下位置出现错误:
DataTable dt = dt; //Use of unassigned local variable 'dt'发布于 2013-05-21 15:59:35
试试这个:
aspx设计视图:
<body>
<form id="form1" runat="server">
<div>
<asp:Table ID="Table1" runat="server">
</asp:Table>
</div>
<div>
<asp:Button ID="btnExport" onclick="btnExport_Click" Text="Export" runat="server">
</div>
</form>
</body>aspx.cs (代码隐藏)
protected void Page_Load(object sender, EventArgs e)
{
TableRow tr = new TableRow();
TableCell tcel = new TableCell();
tcel.Text = "id";
tr.Cells.Add(tcel);
TableCell tcel1 = new TableCell();
tcel1.Text = "id1";
tr.Cells.Add(tcel1);
Table1.Rows.Add(tr);
}
protected void btn_Click(object sender, EventArgs e)
{
string filename = "ExportExcel.xls";
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
//Get the HTML for the control.
Table1.RenderControl(hw);
//Write the HTML back to the browser.
//Response.ContentType = application/vnd.ms-excel;
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
this.EnableViewState = false;
Response.Write(tw.ToString());
Response.End();
}发布于 2013-05-21 17:57:46
首先要说的是,您尝试做的不是导出到excel,而是您发送了一个带有错误标题的html,以诱使浏览器使用excel打开此内容。
这个解决方案有很多问题,excel it self会警告用户内容与扩展名不同,因为您发送的html和您的响应头都显示这是一个excel文件。我敢打赌,客户端上的一些反恶意软件或服务器上的类似软件将阻止此响应,因为提供不同于标头中声明的内容是已知的恶意软件行为。
使用专门的excel库要好得多,也更容易,例如EPPlus,在这里查找将DataTable导出到真正的excel文件的ASP.NET ashx处理程序:
https://stackoverflow.com/questions/16664793
复制相似问题