私は大きなExcel文書を持っていましたので、OleDbconnecitonを使用して開いて編集しました。それを開いても問題ありません。私はちょうどSQLのような選択コマンドを使用しますが、一部の列からデータを変更しようとすると、エラー - >データ型の不一致が条件式に表示されます。更新列生成のサンプルです :エクスポートでoledbのExcelファイルからデータを更新できませんでしたC#
this._updateCommand = string.Format("UPDATE [{0}${1}{2}:{1}{2}] SET F{3} = ?", workSheet, ((DATA_COL)this._cellIndex).ToString(), this._rowIndex, "1");
それを取得:
"UDPATE [worksheet$B1:B1] SET F1 = ?"
NEXTSTEP:
だから、 Task task = Task.Run(() => {String connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Mode=ReadWrite; Data Source={0}; Extended Properties='Excel 8.0; HDR=NO; IMEX=3;'", this.WorkBook);
for (int i = 0; i < this.editCollection.Count; i++)
{
OleDbConnection connection = new OleDbConnection(connectionString);
try
{
OleDbCommand command = new OleDbCommand(editCollection[i]._updateCommand, connection);
command.Parameters.AddWithValue("@thisData", editCollection[i]._value);
command.CommandType = CommandType.Text;
connection.Open();
command.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close();
connection.Dispose();
}
}
editCollection.Clear();
});
、私が間違っていた何を?
Hey Vadim、あなたの投稿コードは大丈夫です。問題は無効なデータ型のようです。これを理解するには、あなたの更新コマンドを見るのがいいでしょう。 Excelで処理できない値を渡そうとしたり、他の形式が定義されているExcel-Cellに渡したりしようとします。 – Sebi
Hey Sebi。たぶん私は間違った接続文字列を使用しましたか?ロールに応じて、接続文字列でIMEXパラメータを使用すると、任意のタイプのデータを文字列データ型に表すことができます。 –