OLEdbとデータセットを使用してExcelの単一行を更新する更新コマンド。 (C#)

StackOverflow https://stackoverflow.com/questions/1422165

  •  07-07-2019
  •  | 
  •  

質問

Excelからスプレッドシートにデータをインポートしています。 OLEDBのみを使用して読み取ります。しかし、結果を元のファイルに保存するのに問題があります。以下はこれまでの私のコードです。

string ExcelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Mode=ReadWrite;" +
        "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";",
        Server.MapPath("./Uploads/" + excelName));
    try
    {
        OleDbDataAdapter ExcelDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$A8:AZ67]", ExcelConnectionString);
        DataSet objDataSet = new DataSet();
        ExcelDataAdapter.Fill(objDataSet, "ExcelTable");
        for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++ )
        {
            Slab slb = new Slab();
            slb.ReceiveDate = objDataSet.Tables[0].Rows[i].Field<DateTime>(0);
            slb.VesselName = objDataSet.Tables[0].Rows[i].Field<string>(1);
            slb.Lot = Convert.ToInt16(objDataSet.Tables[0].Rows[i].Field<double>(2));
            slb.SlabSource = objDataSet.Tables[0].Rows[i].Field<string>(3);
            slb.CertificateNumber = objDataSet.Tables[0].Rows[i].Field<string>(4);

            //I think the next two lines do the same thing.
            objDataSet.Tables[0].Rows[i][4] = "message here";
            objDataSet.Tables[0].Rows[i].SetField<string>(51, "message here");
            ExcelDataAdapter.Update(objDataSet, "ExcelTable");
                  .............
        }

次のエラーが表示されます:

  

更新には、変更された行を含むDataRowコレクションを渡すときに有効なUpdateCommandが必要です。

ドキュメントには、次のような更新コマンドの構文が示されています:

  

UPDATEテーブルSET fieldID = 1、説明= 'nice' WHERE RegionID = 1   しかし、それは私にとってはうまくいきません、forループの現在の行を更新する必要があります。

感謝の意を表したい場合は、 ありがとう

役に立ちましたか?

解決

すごい。

つまり...すごい。

特定の自己鞭毛方法がXPを超えてサポートされるとは思わない。

OLEDBを削除し、Excelファイルを処理するための多くのAPIの1つを選択することを強くお勧めします。それらの束はここで見つけることができます: http://www.codeplex.com/site / search?projectSearchText = excel

私はカップルを使用しましたが、彼らはかなりうまくいきました。または、 OpenXML sdk は、Office 2007+のサポートのみを計画している場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top