【发布时间】:2017-02-27 17:25:53
【问题描述】:
我有一个很大的 excel 文档,所以我决定使用 OleDbconneciton 打开和编辑它。我打开它时没有问题。我只是像 SQL 一样使用 Select 命令,但是当我尝试从某个列更改数据时,我得到一个错误 -> 标准表达式中的数据类型不匹配。 这是更新字符串生成器的示例:
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 = ?"
下一步:
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();
});
那么,我做错了什么?
【问题讨论】:
-
嘿 Vadim,您发布的代码看起来没问题。问题似乎是一些无效的 DataType。要弄清楚这一点,很高兴看到您的更新命令。您尝试传递 Excel 无法使用的值,或者将其传递到定义了其他格式的 Excel 单元格中。
-
嘿塞比。也许我使用了错误的连接字符串?根据角色,在连接字符串中使用 IMEX 参数允许将任何类型的数据表示为字符串数据类型...