Обновление Excel 2007 с OleDb - PullRequest
0 голосов
/ 08 мая 2009

Попытка выполнить команду обновления для файла 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. Можно ли сделать то, что я пытаюсь сделать? Где я ошибся?

Ответы [ 3 ]

1 голос
/ 08 мая 2009

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

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

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

0 голосов
/ 14 апреля 2011

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

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

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

0 голосов
/ 08 мая 2009

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

...