【问题标题】:Excel row insert with C#使用 C# 插入 Excel 行
【发布时间】:2015-11-15 05:07:25
【问题描述】:

我正在使用按钮(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;
    // ...
}

【问题讨论】:

  • 您总是在 pos 1 添加新行,使用 worksheet.rows[row-1].insert()

标签: c#


【解决方案1】:

试试这个:

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 行插入。写入任何值。再次插入并写在下一行。您之前输入的值被向下推了一行,您最终会覆盖之前的值。

【讨论】:

  • 感谢您的所有回答,worksheet.Rows[row].Insert();这成功了!
猜你喜欢
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多