Если Вам когда-либо приходилось сталкиваться с обработкой данных Excel, то в большинстве случаев предлагается считывать данные построчно. На различных сайтах представлено огромная масса примеров с кодом 1С. Но, как только объем загружаемой информации увеличивается, то время, затраченное на чтение данных, становится колоссальным. У нас в организации постоянно приходилось обрабатывать файлы с огромным количеством строк (от 10000), поэтому пришлось отказаться от построчной обработки и считывать массив данных целиком.
Данная обработка считывает данные из любого файла Excel и помещает в таблицу значений 1С с которой уже можно проводить любые действия, используя программный код 1С.
// Ниже представлен пример вызова данной обработки, внедренной в конфигурацию
// Если данная обработка будет запускаться как внешняя нужно дет добавит строку коду
// ВнешниеОбработки.Подключить(...)
мОбработка = Обработки.ЗагрузкаТаблицыИзExcel.Создать() ;
мФорма = мОбработка.ПолучитьФорму() ;
Результат = Форма.ОткрытьМодально();
Если Результат = Неопределено Тогда
Возврат ;
КонецЕсли ;
// Возвращаемый результат - таблица значений с колонками К1, К2 ... Кn
Обработка может вызываться в любой конфигурации 1С в толстом клиенте.
Тестировалась в конфигурациях 1С УПП 1.3 (1.3.92.1), ЗиУП 2.5 (2.5.124.1).
Насколько я помню свойство Value диапазона на листе спокойно считывается в массив. Стандартным COM объектом. Зачем Вам была нужна построчная обработка? И зачем теперь нужен костыль в виде Office System Driver?
1. Почему построчная? Я как раз подчеркиваю, что именно не построчная, а считывание одной командой —
ТекстЗапроса =
«SELECT
| Лист.*
|FROM
| [«+сокрЛП(ЛистXLS)+»$] as Лист»;
2. DCC Driver нужен, чтобы можно было обратиться к Excel по COM-соединению. Без него, увы, никак. Но, если, на рабочем месте пользователя уже установлен MSO, то и драйвер устанавливается в момент установки офиса.
Но возникают случаи, когда MSO не установлен, а обращаться к XLS-файлам нужно, например, в терминалах.
3. Если так хорошо Вы умеете считывать данные с листа в массив — приведите пример кода.
(3) Хороший результат с интересным кодом. Ранее я такой не встречал.
Учту на будущее. Спасибо.