c# 中的索引超出范围错误,"Cannot find column 0"
index out of range error in c#, "Cannot find column 0"
这是我的代码片段。
XLWorkbook wb = new XLWorkbook();
GridView[] gvExcel = new GridView[] { gv01PL, gv01PD, gv01T1, gv023P, gv023L, gv02SU };
string[] name = new string[] { "01-PL", "01-PD", "01-T1", "02-3P", "02-3L", "02-SU" };
for (int i = 0; i < gvExcel.Length; i++)//each gridview
{
if (gvExcel[i].Visible)
{
gvExcel[i].AllowPaging = false;
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);
}
foreach (GridViewRow row in gvExcel[i].Rows)
{
dt.Rows.Add();
for (int c = 0; c < row.Cells.Count; c++)
{
dt.Rows[dt.Rows.Count - 1][c] = row.Cells[c].Text;
}
}
wb.Worksheets.Add(dt);
gvExcel[i].AllowPaging = true;
}
}
我在使用这条线时遇到了问题:
dt.Rows[dt.Rows.Count - 1][c] = row.Cells[c].Text;
它给出了“找不到第 0 列”的错误。我知道我在这里遗漏了一些简单的东西。任何帮助将不胜感激。
改为克隆你的行...
var desRow = dt.NewRow();
var sourceRow = dt.Rows[dt.Rows.Count - 1];
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[];
dt.Rows.Add(desRow);
您可能会收到此错误,因为 DataTable
没有任何列。
确保这里的 gvExcel[i].Columns.Count
不是 0:
for (int z = 0; z < gvExcel[i].Columns.Count; z++)
{
dt.Columns.Add(gvExcel[i].Columns[z].HeaderText);
}
这是我的代码片段。
XLWorkbook wb = new XLWorkbook();
GridView[] gvExcel = new GridView[] { gv01PL, gv01PD, gv01T1, gv023P, gv023L, gv02SU };
string[] name = new string[] { "01-PL", "01-PD", "01-T1", "02-3P", "02-3L", "02-SU" };
for (int i = 0; i < gvExcel.Length; i++)//each gridview
{
if (gvExcel[i].Visible)
{
gvExcel[i].AllowPaging = false;
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);
}
foreach (GridViewRow row in gvExcel[i].Rows)
{
dt.Rows.Add();
for (int c = 0; c < row.Cells.Count; c++)
{
dt.Rows[dt.Rows.Count - 1][c] = row.Cells[c].Text;
}
}
wb.Worksheets.Add(dt);
gvExcel[i].AllowPaging = true;
}
}
我在使用这条线时遇到了问题:
dt.Rows[dt.Rows.Count - 1][c] = row.Cells[c].Text;
它给出了“找不到第 0 列”的错误。我知道我在这里遗漏了一些简单的东西。任何帮助将不胜感激。
改为克隆你的行...
var desRow = dt.NewRow();
var sourceRow = dt.Rows[dt.Rows.Count - 1];
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[];
dt.Rows.Add(desRow);
您可能会收到此错误,因为 DataTable
没有任何列。
确保这里的 gvExcel[i].Columns.Count
不是 0:
for (int z = 0; z < gvExcel[i].Columns.Count; z++) { dt.Columns.Add(gvExcel[i].Columns[z].HeaderText); }