Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Predatore
24 / 19 / 8
Регистрация: 25.10.2009
Сообщений: 241
1

Защищённые листы в Excel

04.08.2013, 02:49. Просмотров 776. Ответов 1
Метки нет (Все метки)

Доброго времени суток товарищи!
Подключаюсь через ADO к Excel такой строкой подключения:
string ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\"; Data Source={0}", filename);
И пробую обновлять в нём данные так:
C#
1
2
3
string select = String.Format("UPDATE [{0}] SET {1} = {2} WHERE {3} = {4}", sheet, fieldName, value, filterField, filterValue);
command.CommandText = select;
command.ExecuteNonQuery();
Если лист в Excel не защищён, то всё ОК, но если защищён, то не смотря на то, что я пытаюсь обновлять разрешённые ячейки, получаю ошибку: "В операции должен использоваться обновляемый запрос."
Можно как-то решить эту проблему не снимая защиты с листа?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2013, 02:49
Ответы с готовыми решениями:

HttpRequest.Cookies защищённые куки
Добрый день ФЫорумчане! Есть небольшой код C#: string source =...

Копировать листы из файлов Excel в один файл Excel
Добрый день, господа! Помогите создать макрос, для того чтобы...

Перенос данных excel -excel на разные листы
Доброго времени суток. Возникла небольшая проблема: Переношу данные из книги...

Листы Excel в C#
Подскажите пожалуйста, может кто-то знает, как менять название листов в Excel...

StringGrid и Excel листы
Как добавить лист в excel в конец книги? for i:=4 to 12 do...

1
Predatore
24 / 19 / 8
Регистрация: 25.10.2009
Сообщений: 241
06.08.2013, 00:42  [ТС] 2
Я не много ввёл вас в заблуждение, простите, я сам заблуждался, дело не в защищённой странице, дело в строке подключения, а именно:
Если строка подключения как выше, то беда, "В операции должен использоваться обновляемый запрос."
Если же строка подключения без IMEX=1, то всё "нормально" апдейтится. Почему нормально в кавычках? Потому что если не поставить IMEX=1, то больше половины заполненных ячеек не видно. Это связанно с типами данных, если IMEX=1, то все данные читаются как текстовые и нет никаких проблем, если же опустить этот параметр или поставить IMEX=0, то он пытается вычислить типы данных, делает он это естественно не правильно, т.к. в Excel в одном столбце могут быть разные типы, и из-за этого куча данных просто не видится.
Т.е. я не могу безболезненно убрать IMEX=1, а он почему-то не даёт обновлять Excel. Вот эту беду можно как-то вылечить?
Попробовал создать 2 подключения, одно для чтения с IMEX=1, другое для записи с IMEX=0, для записи то мне не нужно читать никаких данных, но трюк не удался, все те ячейки, которые не читаются при IMEX=0, в них не делается и UPDATE, выдаётся ошибка: "Невозможно обновить поле '(выражение)'; не обновляемое поле."

Поможите решить проблему, жуть как не хочется работать с Excel через Microsoft.Office.Interop.Excel.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 00:42

Переставить листы в Excel
Всем здрасте. Хотел поменять в экселе листы местами (3-й с 4-м), но возникла...

Объединить листы excel в один
Доброе время суток! Еще раз нуждаюсь в вашей помощи! Нужен макрос для...

Можно ли сгруппировать листы MS Office Excel?
Всем привет! Можно ли сгруппировать листы книги (не ячейки) MS Office Excel и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru