Таблицы 1С и Таблицы ExcelНесмотря на то, что выгрузка данных из 1С в Excel является стандартной процедурой, необходимо помнить ряд особенностей. Например, в Excel разделителем дробной части считается символ
",", поэтому перед сохранением таблицы 1С в формате Excel замените в ней другой разделитель (например
".") на
",", иначе в Excel с этими числами не удастся произвести вычисления, или они вообще не будут отображаться как числа. Например, в информация в таблице 1С "12.2" будет воспринята Excel как "12.фев".
Получение данных из ExcelПроцедура получения данных из Excel производится с помощью технологии
OLE(Object Linking and Embedding). Разобъем всю процедуру на отдельные этапы:
1. Открытие приложения Excel для передачи значений:
Код:Попытка Эксель = СоздатьОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки() + "Не удается произвести запуск Excel!"); Возврат; КонецПопытки; |
Это действие позволит позволит нам получить доступ через переменную "Эксель" к
запущенному приложению Excel.
2. Далее можно получить доступ к
книге ,
листу и
ячейке с данными:
Код:Книга = Эксель.WorkBooks.Open(<ПутьКФайлу>); Лист = Книга.WorkSheets(<НомерЛиста>); Лист = Книга.WorkSheets(<ИмяЛиста>); Значение = Лист.Cells(<НомерСтроки>,<НомерКолонки>).Value; |
3. НЕ забывайте поле выполнения нужных действий добавлять код
Код:,иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.
Выгрузка данных в ExcelДля вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Мы рассмотрели открытие существующей книги при получении данных из Excel, поэтому рассмотрим алгоритм создания новой книги:
1.Создаем новую книгу
Код:Попытка Эксель = СоздатьОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки() + " Нет доступа к программе Excel"); Возврат; КонецПопытки; Книга = Эксель.WorkBooks.Add(); |
При создании новой книги автоматически создаются и листы.
2.Сделаем выбор листа в который будем производить вывод данных:
Код:| Лист = Книга.WorkSheets(НомерЛиста); |
Можно добавить новый лист в существующую книгу:
Код:| Лист = Книга.Sheets.Add(); |
3.Теперь очень ответственный шаг - установка значения ячейки. От него будет зависить в какую область будет выведены данные из 1c:
Код:| Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение; |
4.Завершающим этапом будет сохранение данных:
Код:Попытка Книга.SaveAs(<ПолныйПутьКФайлу>); Исключение Сообщить(ОписаниеОшибки()+" Файл не сохранен!"); Возврат; КонецПопытки; |
Полезные методы для взамодействия 1С с Excel через OLE Код: //Передача данных в(из) Excel Эксель = СоздатьОбъект("Excel.Application"); ///Получение доступа к приложению Excel. Эксель.Visible = Видимость;//0 - Excel не доступен, 1 -доступен. Книга = Эксель.WorkBooks.Add(); //Создание новой книги (файла) Excel. Книга.SaveAs(ИмяФайла);//Сохранение книги Excel. Лист = Книга.WorkSheets.Add();//Добавление нового листа в книгу. Книга = Эксель.WorkBooks.Open(ИмяФайла); //Открытие существующей книги (файла) Excel. Лист = Книга.WorkSheets(НомерЛиста);//Установка листа в качестве рабочего(активного) с номером НомерЛиста. Лист.Name = ИмяЛиста;//Задание рабочему листу имени ИмяЛиста(через имя будет возможно непосредственное обращение к данному листу) //Масштабирование и отступы Лист.PageSetup.Zoom = Масштаб; //Задание параметра страницы "Масштаб" (от 10 до 400). Лист.PageSetup.Orientation = Ориентация;//Ориентация: 1 - книжная, 2 - альбомная. Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры); //Задание левой границы (в сантиметрах). Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры);//Задание верхней границы (в сантиметрах). Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры);//Задание правой границы (в сантиметрах). Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры); //Задание нижней границы (в сантиметрах). //Работа со шрифтами и стилем Лист.Columns(НомерКолонки).ColumnWidth = Ширина; //Задание ширины колонке. Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение; //Ввод данных в ячейку. Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта; //Установка шрифта в ячейке. Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта; //Установка размера шрифта в ячейке. Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный; //1 - жирный шрифт, 0 - нормальный. Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив;//1 - наклонный шрифт, 0 - нормальный. Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый; //2 - подчеркнутый, 1 - нет. Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат; //Установка формата данных ячейки. Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии;//Установка рамок ячейки. 1 - тонкая сплошная. //Работа с защищенными листами Excel ActiveSheet.Unprotect(<password>) //программное снятие защиты листа в Excel из 1С (password- пароль на лист) |