0

Excel 2007ファイルに対して更新コマンドを実行しようとすると、エラーが発生します。 操作では更新可能なクエリを使用する必要があります。 System.Data.OleDbを次のような接続文字列で使用しています。

Dim strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=""" & pathToFile & """;" & _
    "Extended Properties=""Excel 12.0;HDR=YES"""

ReadOnly = falseを設定しようとしましたが、インストール可能なISAMが見つかりませんでした。また、Mode=ReadWriteとIMEX=1を設定してみましたが、効果がないようです。私の更新コマンドは次のようなものです:

 Dim cmd As OleDbCommand = con.CreateCommand()
    cmd.CommandText = "UPDATE [" + sheetName + "] SET [Quantity Error] = 'test' WHERE [Full Name] = 'Mr. Brown White'"

ここで、sheetNameはExcelスキーマのクエリから取得されました。私がやろうとしていることをすることは可能ですか?どこが間違っているのですか?

4

3 に答える 3

1

通常、ワークシート名の後に $ 記号が必要です。試す:

cmd.CommandText = "UPDATE [" + sheetName + "$] SET [Quantity Error] = 'test' WHERE [Full Name] = 'Mr. Brown White'"

$ 記号のない名前は、ワークシート名ではなく名前付き範囲として解釈されます

于 2009-05-07T23:42:39.067 に答える
0

この接続文字列を使用すると、これが機能します

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + reportFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;\";

Excel ファイルへのアクセス許可を確認するだけでなく、接続文字列の拡張プロパティにIMEX=1式が含まれているかどうかを確認します。はいの場合は、削除してください。

于 2011-04-14T10:45:27.657 に答える