0

私は学び始めたばかりでC#、少し混乱していDataSet/DataTable/DataGridViewます。今のところ、、、、ボタンがある単純なフォームがDataGridViewありlistBoxます Insert & Delete。フォームがlistBoxに読み込まれると、Excelシートのリストが表示されます。次に、シートの1つを選択すると、それが表示されます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これらの変更が消えます。

このチュートリアルを見つけましたが、よく理解していればデータベースが変更されます。私の場合は、Excelファイルが変更されます(ただし、元のExcelファイルが必要で、DataSetとでのみ変更を加えますDataTable)。

でのみ変更できますかDataSet/DataTable。はいの場合、どのように?

4

1 に答える 1

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]にエクスポートするだけです。

于 2012-05-23T23:06:54.207 に答える