В данном разделе рассмотрим варианты получения данных из экселя (MS EXCEL) и создание файлов таблицы эксель.
Импорт из экселя в 1С
Импорт данных из файла, созданного экселем (MS EXCEL) будем делать через объект OLE. 1С работает с этим пакетом только если на компьютере установлен компонента из комплекта MS Office - Excel. Сначала создадим объект:
Попытка
Excel = СоздатьОбъект("Excel.Application");
Исключение
Предупреждение(ОписаниеОшибки());
ВызватьИсключение;
КонецПопытки;
Получим количество строк и колонок (если это нада)
НомерПоследнейСтрокиЭкселя = Excel.Cells.CurrentRegion.Rows.Count;
другой вариант (якобы для другой версии) НомерПоследнейСтрокиЭкселя = Excel.Cells(1,1).SpecialCells(11).Row;
если в строках 1-4 нашего экселевского файла есть данные, а строка 5 пустая, в строке 6 и в последующих строках также есть данные - то данная комманда все равно считает что строк только 4!!!
поэтому данные должны быть без пустых строк!!
или вручную указывайте количество строк, которое нужно считать
Для Строка=2 По НомерПоследнейСтрокиЭкселя Цикл
//Первая колонка обязательно должна быть заполнена, иначе считаем что в этой строке нет данных
Если ПустоеЗначение(СокрЛП(Excel.Cells(Строка,1).Value))=1 Тогда
Сообщить("Строка "+Строка+" пустая");
Продолжить;
//или Прервать;
КонецЕсли;
Выборка колонок в цикле
Для Колонка=1 По НомерПоследнейКолонкиЭкселя Цикл
Значение=СокрЛП(Excel.Cells(Строка,Колонка).Value);
КонецЦикла;
или заполнение каждой переменной соответсвующими данными
Обязательно закроем файл! Если не закроем - он будет доступен только "для чтения" до тех пор, пока не закроем данную обработку!
Excel.Quit();
Так же, чтобы считать данные из ячейки книги Эксель, можно воспользоваться командой Range (есть мнение что работает быстрее).
Excel.Range(СокрЛП(Колонка)+СокрЛП(Строка)).value ,
где Колонка в символьное представление колонки (A, Z или BC).
Экспорт данных из 1С в эксель.
В принципе, можно воспользоваться стандартной процедурой "Файл-Сохранить как-Таблицы EXCEL", но случаи бывают разные. Например, автоматические обмены с другими БД. Тут можно воспользоваться стандартной функцией 1С "Записать". Сначала формируем как обычную печатную форму:
Таб = СоздатьОбъект("Таблица");
затем заполняем ее, а вконце, вместо Таб.Показать("Таблица") воспользуйтесь
Таб.Записать(<ИмяФайла>,"xls")
Хотя, есть ограничение в 256 символов в одной ячейке таблицы, если использовать предложенные ранее примеры. В случае экспорта через OLE такого ограничения не существует, однако не стоит забывать о том, что Excel должен быть установлен на компьютере, с которого данная выгрузка выполняется. Делаем практически то же самое что и при импорте... Создаем объект: