Dev ›
Как изменить значения в ячейках таблицы Excel используя технологию ADO ›
#1
22.12.23 5:16
Доброго времени суток, коллеги.
Столкнулась с проблемой.
Нужно заполнить таблицу Excel по некому шаблону (довольно сложные таблицы), Нужно заполнить этот шаблон данными из документа 1С. Файлы большие и ole на некоторых не просто тормозит, а уходит и не возвращается. При помощи ADO все читается на ура. Но нужно внести новые значения в некие позиции, не меняя форматирования и пр. И тут возникает проблема. Читаю все строки листа Excel и в нужные позиции вношу изменения в соотвтетствии с документом. Если без лишних подробностей то код такой:
Код |
---|
Connection = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ПутьКФайлу;
СтрокаПодключения = СтрокаПодключения + "; Extended Properties=""Excel 12.0 Xml;HDR=NO"";";
Connection.Open(СтрокаПодключения);
Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = Connection;
Счетчик = 1;
ИмяТаблицы = "";
СписокЛистов = Новый СписокЗначений;
Для Каждого Table ИЗ Catalog.Tables Цикл
Если НомерЛиста = Счетчик Тогда
ИмяТаблицы = Table.Name;
КонецЕсли;
СписокЛистов.Добавить(Table.Name, "Лист " + Счетчик);
Счетчик = Счетчик + 1;
КонецЦикла;
Если ПустаяСтрока(ИмяТаблицы) Тогда
Connection.Close();
Возврат;
Иначе
Command = Новый COMОбъект("ADODB.Command");
RecordSet = Новый COMОбъект("ADODB.RecordSet");
Command.ActiveConnection = Connection;
Command.CommandText = "SEL ECT * FR OM [" + ИмяТаблицы + "]";
Command.CommandType = 1;
RecordSet = Command.Execute();
КоличествоКолонок = RecordSet.Fields.Count;
Счетчик = 1;
Пока НЕ RecordSet.EOF() Цикл
Если Счетчик = 1 Тогда
RecordSet.Fields(2).Value = "ТЕСТ ADODB!!!";
Прервать;
КонецЕсли;
RecordSet.MoveNext();
Счетчик = Счетчик + 1;
КонецЦикла;
КонецЕсли;
Connection.Close();
|
Смысл всего этого - в 3-ю колонку первой строки пытаюсь записать текст "ТЕСТ ADODB!!!"
Но это не прокатывает. Ошибка "Текущий объект Recordset не поддерживает обновление. Это связано с ограничением поставщика или с выбранным типом блокировки".
Можно пойти от обратного - по данным запроса к документу (например по штрихкоду товара) искать ячейки на листе в которые нужно внести данные, но с запросом UPDATE я не справилась.
Может быть кто-нибудь делал что-либо подобное?
Прошу помощи.