【发布时间】:2017-11-17 17:43:18
【问题描述】:
我有一个带有 C# 代码的 aspx 页面。
在此页面中,有 3 个网格视图和一个按钮 - 导出到 excel。
点击按钮后,3个gridviews的内容将被导出到3个excel表中。
gridviews的数据绑定在类文件中完成,gridview被返回。
string sql1="something1";
classFile.gvBind(gv1,sql1);
string sql2="something2";
classFile.gvBind(gv2,sql2);
string sql3="something3";
classFile.gvBind(gv3,sql3);
而且效果很好。现在单击按钮,我正在遍历网格视图的列和行并导出它们。但是所有网格视图的行数总是显示为零。但是,列标题可以正常工作。
这是点击按钮的代码:
XLWorkbook wb = new XLWorkbook();
GridView[] gvExcel = new GridView[] { gv1, gv2, gv3};
string[] name = new string[] { "sheetName1", "sheetName2", "sheetName3"};
for (int i = 0; i < gvExcel.Length; i++)
{
if (gvExcel[i].Visible)
{
gvExcel[i].AllowPaging = false;
gvExcel[i].DataBind();
DataTable dt = new DataTable(name[i].ToString());
for (int z = 0; z < gvExcel[i].Columns.Count; z++)
{
dt.Columns.Add(gvExcel[i].Columns[z].HeaderText);
}
int x = gvExcel[i].Rows.Count;
foreach (GridViewRow row in gvExcel[i].Rows)
{
dt.Rows.Add();
for (int c = 0; c < gvRow.Cells.Count; c++)
{
dt.Rows[dt.Rows.Count - 1][c] = gvRow.Cells[c].Text;
}
}
wb.Worksheets.Add(dt);
gvExcel[i].AllowPaging = true;
}
int x 始终为 =0。我在哪里做错了?有什么帮助吗? 谢谢。!!
【问题讨论】:
-
您可以在绑定到网格之前直接将源添加到 Datatable 并将您的网格视图数据源转换为 Datatable 并使用它而不是复杂化。