Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 更新Excel工作表:无法更新';(表达)和;;字段不可更新_.net_Excel_Oledb_Ms Jet Ace - Fatal编程技术网

.net 更新Excel工作表:无法更新';(表达)和;;字段不可更新

.net 更新Excel工作表:无法更新';(表达)和;;字段不可更新,.net,excel,oledb,ms-jet-ace,.net,Excel,Oledb,Ms Jet Ace,好的,我是.NET新手,在使用ACE.OLEDB连接更改Excel工作表中的更新值时遇到问题。我不断收到错误:无法更新“(表达式)”;字段不可更新。因此,我的工作表的结构如下所示: Symbol AssetClass MarketValue SharePrice ABC formula $1000 $10.50 MSFT formula $2000 $12 公式字段包含一个公式,该公式在另一个excel工作簿中查找符号,

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

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示例的变体。

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

不幸的是,OLEDB与Excel的连接也是如此。

这里提到

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


不幸的是,OLEDB与Excel的连接也是如此。

错误发生在哪一行?@rwisch45 da.Update(ds,“HoldingsTable”)尝试仅使用da.Update(ds)@rwisch45现在导致此错误:Update无法找到TableMapping['Table']或DataTable'Table'“您可以使用普通ADO方法编辑Excel数据。与包含Excel公式(以“=”开头)的Excel工作表中的单元格相对应的记录集字段是只读的,无法编辑”-我认为这可能会影响到任何与Excel的OLE DB连接,不幸的是,在@rwisch45 da.Update(ds,“HoldingsTable”)上发生的错误是哪一行?@rwisch45 da.Update(ds,“HoldingsTable”)尝试只使用da.Update(ds)@rwisch45现在导致此错误:更新无法找到TableMapping['Table']或DataTable'Table'。“从-”您可以使用普通ADO方法编辑Excel数据。与包含Excel公式(以“=”开头)的Excel工作表中的单元格相对应的记录集字段是只读的,无法编辑“-我认为这可能会影响到任何与Excel的OLE DB连接,不幸的是。为我节省了很多时间。出于某种原因,微软已经用一篇关于非常基本的ADO的博客类型的文章取代了我上面答案中链接的KnowledgeBase文章。这篇文章,因为它存在时,这个答案是可以找到的谢谢你为我们的帮助。它救了我,冠军。为我节省了很多时间。出于某种原因,微软已经用一篇关于非常基本的ADO的博客类型的文章取代了我上面答案中链接的KnowledgeBase文章。这篇文章,因为它存在时,这个答案是可以找到的谢谢你为我们的帮助。它救了我。