0

Excel シミュレーションを C# にインポートする必要があります。その後、テーブルを更新できるようにする必要があります。シミュレーションは、ランダムに生成された数値を中心に展開します。乱数は手動で行っているため、変更される唯一の列です。周囲の列が乱数で更新されます。私はさまざまなことを試しましたが、今のところ運がありません。

また、コードが現在のように、

adp.Update(excelDataSet);

コマンドを実行すると、「変更された行を含む DataRow コレクションが渡された場合、Update には有効な UpdateCommand が必要です」というエラーが表示されます。テーブルは、コメントアウトされている場合にのみグリッドビューにロードされます。

これが私のコードatmです。前もって感謝します。

            string fileName = @"C:\simulation.xlsx";
            string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;READONLY=FALSE\"";
            OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString);
            con.Open();
            OleDbCommand selectCommand = new OleDbCommand("select * from [SHEET1$]", con);             
            OleDbDataAdapter adp = new System.Data.OleDb.OleDbDataAdapter();
            adp.SelectCommand = selectCommand;
            DataSet excelDataSet = new DataSet();
            adp.Fill(excelDataSet);

            for (int i = 0; i < 29; i++)
            {
                excelDataSet.Tables[0].Rows[i][1] = Math.Round(r.NextDouble(), 2);
                excelDataSet.Tables[0].Rows[i][6] = Math.Round(r.NextDouble(), 2);
                excelDataSet.Tables[0].Rows[i][8] = Math.Round(r.NextDouble(), 2);
            }
            adp.Update(excelDataSet);
            gridview.DataSource = excelDataSet.Tables[0];
            con.Close();
4

1 に答える 1

0

OleDbCommandBuilderをビルドする行を追加します

....
OleDbDataAdapter adp = new System.Data.OleDb.OleDbDataAdapter();
adp.SelectCommand = selectCommand;
OleDbCommandBuilder cb = new OleDbCommandBuilder(adp);
adp.UpdateCommand = cb.GetUpdateCommand();
....

これにより、OleDbDataAdapter に が作成されます (およびUpdateCommandにも使用できます) 。InsertCommandDeleteCommand

于 2013-10-22T22:30:36.487 に答える