我的应用程序将包含标题列名称的excel文件中的工作表导入到新的dataGridView表中。为了方便起见,我们可以说列名是;姓名,城市,州,州。我把前两个条目“硬编码”为Jack,Detroit,MI,Missing;和迈克,芝加哥,伊利诺伊州,失踪。接下来,我导入一个添加更多条目的XML文件。我有代码查找原始的2个条目,如果找到,我希望它“更新”或“重新编辑”Missing to Found。 (我希望这只发生在dataGridView表中。我发现的sql示例都是为了更新原始数据库。我希望它只更新dataGridView表。
此代码旨在更新excel文件。
sql = "UPDATE " + myNameRange + " SET " + mySET + "' WHERE " + myWHERE + "'";
有没有办法可以做这样的事情只改变dataGridView中的数据?
从excel引入工作表的方法
public static void loadData(string SheetName, DataGridView MyDataGrid, string filePathMain)
{
string pathCon = "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" + filePathMain + ";Extended Properties=\"Excel 8.0; HDR=YES;IMEX=3;READONLY=FALSE\";";
OleDbConnection conn = new OleDbConnection(pathCon);
OleDbCommand cmd = new OleDbCommand("select * from [" + SheetName + "]", conn);
conn.Open();
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
//MessageBox.Show( dt.Rows.Count.ToString());
MyDataGrid.Tag = dt.Rows.Count.ToString();
MyDataGrid.DataSource = dt;
OleDbCommand updateCmd = new OleDbCommand("UPDATE [" + SheetName + "]");
myDataAdapter.UpdateCommand = updateCmd;
conn.Close();
}
这里我很难将数据编码到表中。这有效。
DataTable dt = ((DataGridView)TC).DataSource as DataTable;
DataRow row0 = dt.NewRow();
row0["Name"] = "Jack";
row0["Status"] = "MISSING";
dt.Rows.Add(row0);
DataRow row1 = dt.NewRow();
row1["Name"] = "Mike";
row1["Status"] = "MISSING";
dt.Rows.Add(row1);
答案 0 :(得分:0)
dgvThing.DataSource
会为您提供绑定到DataGridView
的数据,您可以在不修改原始数据源(即Excel文件)的情况下对其进行微缩。
编辑:在这种情况下,您将遍历行以找到您的人并更新其状态。
DataTable dt = ((DataGridView)TC).DataSource as DataTable;
foreach (DataRow row in dt.Rows)
{
if (row["Name"].Equals("Jack"))
row["Status"] = "Found";
}