4

Oledb を使用してデータを一般的な Excel に書き込むことは可能ですか?

テーブル構造などはありません。ユーザー ドキュメントです。

私が試したとき、私は常に OleDbException を持っていました

  • "INSERT" クエリ応答: 操作は、更新可能なアプリケーションを使用する必要があります。
  • 「UPDATE」クエリ応答: 1 つ以上の必須パラメーターに値が指定されていません。

私のコード:

  using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\[...]\Classeur.xls" + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\""))
        {
            connection.Open();
            OleDbCommand commande = new OleDbCommand(
              "INSERT INTO [Feuil1$](F1,F2,F3) VALUES ('A3','B3','C3');", connection);
            commande.ExecuteNonQuery();

            connection.Close();
            connection.Dispose();
        }

新しいテスト (成功せずに!) :

       using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\Users\[...]\Classeur.xls" + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\""))
        {
            string column = "A";
            string row = "1";
            string worksheetName = "Feuil1";
            string data = "TEST";
            connection.Open();
            string commandString = String.Format("UPDATE [{0}${1}{2}:{1}{2}] SET F1='{3}'", worksheetName, column, row, data);
            OleDbCommand commande = new OleDbCommand(
                commandString, connection);
            connection.Close();
            connection.Dispose();
        }
4

2 に答える 2

7

やっと見つけた!IMEX の簡単な質問 (そのために多くの時間が失われました!)

したがって、誰かが同じ問題を抱えている場合:

 //for reading data 
 Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\"

 //for writing data 
 Extended Properties=\"Excel 8.0;HDR=NO;IMEX=3;READONLY=FALSE\"
于 2013-10-30T08:31:47.507 に答える
0

データの書き込みに関するこの IMEX の状況は、何ヶ月も私を夢中にさせていました。機能させるには、それを削除する必要がありました。[CheapD] の回答を見つけたところ、問題なく動作します。Cheap に感謝します。

MODE パラメータを追加することをお勧めします。

Extended Properties='Excel 12.0; HDR=Yes; IMEX=3; MODE=Share; READONLY=False';
于 2020-12-30T01:09:03.113 に答える