Обновление листа 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.
1 ответ
Здесь упоминается в разделе Как использовать ADO с данными Excel из Visual Basic или VBA,
"Вы можете редактировать данные Excel с помощью обычных методов ADO. Поля набора записей, которые соответствуют ячейкам на листе Excel, содержащем формулы Excel (начинающиеся с"="), доступны только для чтения и не могут редактироваться".
К сожалению, это также относится и к соединению OLEDB с Excel.