我正在重写我团队主库中的一个功能,其中一个功能是将Gridview导出到Excel电子表格。我已经有一个将DataSet导出到Excel的函数,所以我需要做的就是将gridview转换为DataSet。没问题吧?一切顺利,直到我发现GridView对象的列collect为空,并且在使用自动生成的列时标题文本为null。
我知道MS已经说过你放弃了gridview渲染数据的方式,但我找不到任何能说明我如何捕获列集合的东西。我希望这个图书馆尽可能灵活。
这是我现在的功能......
public static MemoryStream GridViewToXLSX(GridView Gridview, Options options = null)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
for (int i = 0; i < Gridview.Columns.Count; i++)
{
dt.Columns.Add(Gridview.Columns[i].HeaderText);
}
foreach (GridViewRow row in Gridview.Rows)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < Gridview.Columns.Count; j++)
{
dr[Gridview.Columns[j].HeaderText] = row.Cells[j].Text;
}
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
return DataSetToXLSX(ds, options);
}
答案 0 :(得分:2)
或者你可以尝试这个示例代码,而不是Column.count,你可以计算GridView的HeaderRow中的单元格数。
这只是一个示例,而非实际代码
GridViewRow headerRow = gv.HeaderRow;
int count = headerRow.Cells.Count