导入excel文件并将DataGridView选定的行显示到另一个DataGridView

本文关键字:DataGridView 显示 另一个 excel 文件 导入 | 更新日期: 2023-09-27 17:59:30

我正在尝试导入excel文件并将其加载到我的datagridview1中。

在我的DataGridView中显示了文件的内容后,我想选择该行并将其传输到我的第二个DataGridView中。

请有人能帮我修复我的代码吗?因为我收到错误:

System.Windows.Forms.dll 中发生类型为"System.InvalidOperationException"的未处理异常

private void button1_Click(object sender, EventArgs e)
{
   string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +textBox1.Text + ";Extended Properties='Excel 12.0 XML;HDR=YES;';";
OleDbConnection conn = new OleDbConnection(PathConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + "Sheet1" + "$]", conn);
   DataTable dt = new DataTable();
   myDataAdapter.Fill(dt);
   dataGridView1.DataSource = dt;
}
private void button2_Click(object sender, EventArgs e)
{
   OpenFileDialog openFileDialog1 = new OpenFileDialog();
   if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
   {
   this.textBox1.Text = openFileDialog1.FileName;
   }
}
private void button3_Click(object sender, EventArgs e)
{
   foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray())
   {
   dataGridView2.Rows.Remove(selRow);
   dataGridView2.Rows.Add(selRow);
   }
}

导入excel文件并将DataGridView选定的行显示到另一个DataGridView

您可以尝试更像这个的东西

var selected_rows = new List<DataGridViewRow>();
foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray())
{
      selected_rows.Add(row);
}
foreach(var row in selected_rows){
      dataGridView1.Rows.Remove(row);
      dataGridView2.Rows.Add(row);
}

C#通常不允许在枚举集合时修改该集合。通常,您可以通过使用初始循环来简单地收集要操作的对象,然后可以迭代该对象集合来避免这个问题。像这样的

我还认为调用dataGridView1.SelectedRows就足够了。不需要转换为强类型数组,但这可能更像是一种语法偏好。

试试这个,让我知道它是如何工作的