Обновите Excel 2007 с помощью OleDb

Попытка выполнить команду обновления для файла Excel 2007 дает ошибку: Операция должна использовать обновляемый запрос. Я использую System.Data.OleDb с такой строкой подключения:

Dim strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=""" & pathToFile & """;" & _
    "Extended Properties=""Excel 12.0;HDR=YES"""

Я попытался установить ReadOnly = false, но это дает Не удалось найти устанавливаемый ISAM. Я также попытался установить Mode = ReadWrite и IMEX = 1, которые, похоже, не имели никакого эффекта. Моя команда обновления выглядит так:

 Dim cmd As OleDbCommand = con.CreateCommand()
    cmd.CommandText = "UPDATE [" + sheetName + "] SET [Quantity Error] = 'test' WHERE [Full Name] = 'Mr. Brown White'"

где sheetName было получено в результате запроса схемы Excel. Можно ли делать то, что я пытаюсь? Где я ошибся?


person Community    schedule 07.05.2009    source источник
comment
У меня та же проблема, есть ли у вас решение?   -  person Veeru    schedule 14.04.2011


Ответы (3)


Обычно вам нужен знак $ после имени рабочего листа. Пытаться:

cmd.CommandText = "UPDATE [" + sheetName + "$] SET [Quantity Error] = 'test' WHERE [Full Name] = 'Mr. Brown White'"

Имена без знаков $ интерпретируются как именованные диапазоны, а не как имена рабочих листов.

person barrowc    schedule 07.05.2009

Я считаю, что это обычно проблема с разрешениями. Можно ли читать / писать в файл, если открыть его в Excel?

person aphoria    schedule 07.05.2009

Используйте эту строку подключения, это будет работать

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + reportFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;\";

Помимо проверки разрешений для вашего файла Excel, проверьте, содержат ли расширенные свойства строки подключения выражение IMEX=1. Если да, удалите его.

person Veeru    schedule 14.04.2011