我有一个带网格的用户控件。现在,我在网格上方的同一用户网格上添加了导出到excel按钮,以使用户能够将相应的网格数据导出到Excel。我在用户控件中单击按钮时编写了以下功能。
protected void Home_ExportExcel_Click(object sender, EventArgs args)
{
DataTable resultTbl = new DataTable();
if (this.HomeGridDataSource != null)
resultTbl = this.HomeGridDataSource as DataTable;
Download(resultTbl, this.MasterPage.CurrentLibrary);
}
下载功能
private void Download(DataTable tb)
{
string attachment = "attachment; filename=HomeGridData" + DateTime.Now.ToString() + ".xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.ms-excel";
string tab = "";
foreach (DataColumn dc in tb.Columns)
{
Response.Write(tab + dc.ColumnName);
tab = "\t";
}
Response.Write("\n");
int i;
foreach (DataRow dr in tb.Rows)
{
tab = "";
for (i = 0; i < tb.Columns.Count; i++)
{
Response.Write(tab + dr[i].ToString());
tab = "\t";
}
Response.Write("\n");
}
Response.End();
}
现在我以文本格式获得请求的响应,但是我需要使用Grid数据将其下载到用户计算机。
我也尝试使用Excel样式等生成.xml文件。但是我在响应对象中获得与文本格式相同的结果,但我希望它能够下载。
我在这里缺少什么?