我正在使用按钮(Form1,Panel1)在表单上创建动态文本框。我将这些动态的文本发送到Excel(使用Form2中的按钮),每个文本框都在新行上。如果我从一个行数不限的默认电子表格开始,它将使用" foreach"环。如果我尝试为每个文本框执行插入行,则将插入行,但只有最后一个文本框将显示单元格中的数据。 IE:有5个文本框,#5的文本将显示。这是我正在使用的代码:
int row = 1;
foreach (TextBox dynamicTxtBx in sourcePanel.Controls.OfType<TextBox>())
{
worksheet.Rows[1].Insert();
worksheet.Cells[row++, "A"].value = dynamicTxtBx.Text;
// ...
}
答案 0 :(得分:2)
试试这个:
int row = 1;
foreach (TextBox dynamicTxtBx in sourcePanel.Controls.OfType<TextBox>())
{
worksheet.Rows[row].Insert();
worksheet.Cells[row++, "A"].value = dynamicTxtBx.Text;
// ...
}
在Row [1]处执行插入时,将按下所有当前行。 例如:第2行变为第3行,第3行变为第4行,依此类推。 这就是值被覆盖的原因,只有你输入的最后一个值保留。
您可以在Excel工作表中模拟这一点,以便更清楚地了解这一点。打开Excel工作表。在第1行插入。写任何价值。再次插入并写入下一行。您之前输入的值会被一行向下推,最后会覆盖之前的值。