我可以在运行时在datagridview中保存更改的信息吗?

时间:2012-05-23 21:23:37

标签: c# .net datagridview datatable dataset

我刚开始学习C#,我对DataSet/DataTable/DataGridView感到有些困惑。 现在,我有一个简单的表单,其中有DataGridViewlistBoxInsert & Delete按钮。当我的表单在listBox中加载时,我得到了excel表的列表。然后我选择其中一张,然后它会显示在DataGridView上(我写给DataSetDataTable的所有信息)。我想在运行时添加或删除列。这是我的Delete按钮的代码:

    excelConn = new OleDbConnection();
    excelConn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + excelFilePath + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
    DataTable dt = new DataTable();
    OleDbDataAdapter ExcelAdapt = new OleDbDataAdapter("Select * From " + "[" + tableName + "]", excelConn);
    ExcelAdapt.Fill(dt);
    try
    {
      dt.Columns.Remove(colName);
      dt.AcceptChanges();
      var bds = new BindingSource();
      bds.DataSource = dt;
      grid.DataSource = bds;

      MessageBox.Show("Column(s) deleted ");
      excelConn.Close();
      }

      catch (Exception ex)
      {
         MessageBox.Show(ex.Message);
      }

我面临的问题是我无法保存在运行时所做的更改,甚至在运行时这些更改都是暂时的。如果在运行时我添加新列,然后从ListBox中选择另一个工作表,这些更改将消失。

found this tutorial但是如果我理解的话就会改变数据库;在我的情况下它会改变excel文件(但我希望有原始的excel文件并仅在DataSetDataTable中进行更改)。

我是否可以仅在DataSet/DataTable进行更改。如果是,那怎么办?

1 个答案:

答案 0 :(得分:0)

以下是您的问题的确切解决方案,它将数据从DataGridView更新到Excel,我刚刚在我的机器上测试过它确实有效:

http://blogs.msdn.com/b/spike/archive/2008/10/29/how-to-update-an-excel-worksheet-using-dataset-and-the-oledbdataadapter.aspx

<强> [编辑]

例如,以下代码将从DataGridView1和ds的本地副本中删除第3行,但您的EXCEL不会受到影响。

dataGridView1.Rows.RemoveAt(2);
ds.Tables["[Sheet1$]"].Rows[2].Delete();

稍后当您想将此数据保存到其他EXCEL时,您只需导出到新的EXCEL或相同的EXCEL [SheetX]。