【发布时间】:2015-11-26 09:40:01
【问题描述】:
我需要使用从搜索中获得的以下代码将嵌套的 Gridview 导出到 Excel,但是当我单击“导出”按钮时出现错误:
“System.ArgumentOutOfRangeException”类型的异常发生在 mscorlib.dll 但未在用户代码中处理
这是代码:
protected void ExportExcel(object sender, EventArgs e)
{
DataTable dt = new DataTable("GridView_Data");
GridView grvPayrollDetails = (GridView)grvPayroll.Rows[1].FindControl("grvPayrollDetails");
foreach (TableCell cell in grvPayroll.HeaderRow.Cells)
{
dt.Columns.Add(cell.Text);
}
foreach (TableCell cell in grvPayrollDetails.HeaderRow.Cells)
{
dt.Columns.Add(cell.Text);
}
dt.Columns.RemoveAt(0);
foreach (GridViewRow row in grvPayroll.Rows)
{
GridView grvPayrollDetailscell = (row.FindControl("grvPayrollDetails") as GridView);
for (int j = 0; j < grvPayrollDetailscell.Rows.Count; j++)
{
dt.Rows.Add(row.Cells[1].Text, row.Cells[2].Text, grvPayrollDetailscell.Rows[j].Cells[0].Text, grvPayrollDetailscell.Rows[j].Cells[1].Text);
}
}
using (XLWorkbook wb = new XLWorkbook())
{
wb.Worksheets.Add(dt);
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=grvPayrollDetails.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
grvPayroll 是主 Gridview,而 Gridview grvPayrollDetails 是嵌套的子 Gridview。请帮忙! 我遵循了这个指南:Export Nested GridView (GridView inside GridView) to Excel in ASP.Net
这是嵌套的 Gridview : Nested Gridview
【问题讨论】:
-
使用调试器 Luke!并检查超出范围的值。顺便说一句,您在哪一行得到了这个异常?
-
在这一行出现错误:GridView grvPayrollDetails = (GridView)grvPayroll.Rows[1].FindControl("grvPayrollDetails");但我不明白为什么?
-
那么你的gridview 真的在那一行之前有2行?