我可以在运行时将更改的信息保存在数据网格视图中吗?
本文关键字:网格 数据网 数据 视图 存在 保存 运行时 信息 我可以 | 更新日期: 2023-09-27 18:35:20
我刚刚开始学习C#
,我对DataSet/DataTable/DataGridView
有点困惑。现在我有一个简单的表单,其中有DataGridView
、listBox
、Insert & Delete
按钮。当我的表单在列表框中加载时,我正在获得 excel 工作表的列表。然后我选择其中一张纸,然后它出现在DataGridView
上(我写给DataSet
和DataTable
的所有信息)。我想在运行时添加或删除列。这是我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
这些更改就会消失。
我找到了本教程,但如果我理解得很好,它会更改数据库; 好吧,就我而言,它会更改 excel 文件(但我希望拥有原始的 excel 文件并且仅在 DataSet
和 DataTable
中进行更改)。
我只能在DataSet/DataTable
中进行更改吗?如果是,那怎么做?
这是您的问题的确切解决方案,它确实将数据从 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]。