更新Excel工作表:无法更新“(expression式)”; 字段不可更新

好的,我是.NET新手,在使用ACE.OLEDB连接更改Excel工作表中的更新值时遇到了问题。 我不断收到错误:无法更新'(expression式)'; 字段不可更新。 所以我的工作表的结构如下所示:

Symbol AssetClass MarketValue SharePrice ABC formula $1000 $10.50 MSFT formula $2000 $12 

公式字段包含一个公式,该公式在另一个Excel工作簿中查找符号,然后获取其资产类别。 问题是它不允许我更新该字段。 我将列的格式改为文本,看是否是问题,但没有改变。 我不知道为什么我不能像添加文本一样添加公式

这里是我的代码如下:

 Private m_sConn1 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PATH_Workbook1 & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;MAXSCANROWS=3;READONLY=FALSE\""" Dim conn As New OleDbConnection(m_sConn1) conn.Open() Dim cmd As New OleDbCommand() cmd.Connection = conn Dim da As New OleDbDataAdapter("Select * From [HoldingsTest$]", conn) Dim ds As DataSet = New DataSet() da.Fill(ds, "HoldingsTable") ' Generate the UpdateCommand and add the parameters for the command. da.UpdateCommand = New OleDbCommand("UPDATE [HoldingsTest$] SET AssetClass =?, MarketValue =?, SharePrice = ? WHERE Symbol = ?", conn) da.UpdateCommand.Parameters.Add("@AssetClass", OleDbType.VarChar).SourceColumn = "AssetClass" da.UpdateCommand.Parameters.Add("@MarketValue", OleDbType.Currency).SourceColumn = "MarketValue" da.UpdateCommand.Parameters.Add("@SharePrice", OleDbType.Currency).SourceColumn = "SharePrice" da.UpdateCommand.Parameters.Add("@Symbol", OleDbType.VarChar, 9, "Symbol") ' Update records ds.Tables(0).Rows(1)("AssetClass") = "formula" ds.Tables(0).Rows(1)("MarketValue") = 101 ds.Tables(0).Rows(1)("SharePrice") = 91 ' Apply the dataset changes to the actual data source (the workbook). da.Update(ds, "HoldingsTable") 

任何帮助将不胜感激。 我真的很难过 上面的代码是来自MSDN的示例中的一个变体。

这里提到了如何使用Visual Basic或VBA中的Excel数据使用ADO ,

“您可以使用普通的ADO方法编辑Excel数据。 对应于包含Excel公式(以”=“开头)的Excel工作表中的单元格的logging集字段是只读的 ,不能编辑”

不幸的是,对于OLEDB连接到Excel也是如此。