1С и Excel.
I. Вступление
II. Таблицы 1С и Excel.
III. Получение данных из Excel.
IV. Вывод данных в Excel.
V. Часто используемые методы для чтения/установки значений в Excel.
Вступление.
Многие знают, что Excel гораздо старше 1С. На мой взгляд,
это очень успешный продукт, и нареканий о нем я не слышал. Excel прост и
универсален. Он способен выполнять не только простые арифметические операции, но
и сложные вычисления, построение графиков и т.п. Знаю примеры, когда организации
до перехода на 1С вели часть бухгалтерии в Excel. Многие и сейчас параллельно
используют две программы. В этой статье рассмотрим способы обмена данными между
1С и Excel.
Таблицы 1С и Excel.
Многие пользователи для удобства работы сохраняют таблицы 1С (печатные формы)
в формате Excel (*.xls). После чего в полученном файле делают различные
группировки, сортировки, вычисления и т.п. Связано это с тем, что в таблицах 1С
нет такого огромного функционала как в таблицах Excel. Но в версии 1С 8.0 есть
нововведения, делающих работу с таблицами более комфортной.
На сайте 1С (www.1C.ru) есть полезная программка, которая дает
возможность открывать таблицы 1С в Excel и сохранять лист Excel как таблицу
1С. Это пригодится в том случае, если таблицу 1С не сохранили в формате Excel, а на
том компьютере, где нужно открыть эту таблицу не установлена 1С. Да и
постоянно помнить о том, что сохранить таблицу 1С нужно в формате Excel, не будет
необходимости.
Полная информация о программе находится
здесь. Скачать программу можно
здесь (архив zip 682 739 байт).
Замечание: В Excel разделителем дробной части считается символ ",".
Поэтому перед сохранением таблицы 1С в формате Excel замените в ней другой разделитель
(например ".") на ",". Иначе в Excel с этими числами не удастся произвести
вычисления, или они вообще не будут отображаться как числа. Например, в таблице
1С "15.2" отобразится в Excel как "15.фев".
Получение данных из Excel.
Доступ из 1С к Excel производится посредством OLE. Например, код
Попытка
Эксель
= СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() +
" Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
позволит нам получить
доступ через переменную "Эксель" к запущенному приложению Excel. А далее уже
можно получить доступ к книге (файлу), листу и ячейке с данными. Далее примеры кода.
Открытие книги (файла):
Книга
=
Эксель.WorkBooks.Open(ПутьКФайлу);
ПутьКФайлу - полный путь к файлу книги Excel.
Выбор листа книги для работы с ним:
Лист
=
Книга.WorkSheets(НомерЛиста);
или
Лист
=
Книга.WorkSheets(ИмяЛиста);
НомерЛиста - номер листа в книге, ИмяЛиста - имя листа в книге.
Получение значения ячейки листа:
Значение
=
Лист.Cells(НомерСтроки,
НомерКолонки).Value;
НомерСтроки, НомерКолонки - номер строки и номер
колонки, на пересечении которых находится ячейка.
Важно: не забывайте поле выполнения
нужных действий добавлять код
Эксель.Quit();
, иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.
Вывод данных в Excel.
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо
создать новую, и выбрать рабочий лист для вывода данных. Открытие существующей книги описано выше,
а для создания новой книги нужно использовать следующий код:
Попытка
Эксель
= СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() +
" Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
Книга
=
Эксель.WorkBooks.Add();
Так как при создании книги в Excel автоматически создаются листы (Сервис->Параметры->Общие->Листов в новой книге),
то нужно лишь произвести выбор листа, с которым будет вестись работа:
Лист
=
Книга.WorkSheets(НомерЛиста);
либо добавить в книгу новый лист, если необходимо:
Лист
=
Книга.Sheets.Add();
Следующим шагом будет установка значения ячейки:
Лист.Cells(НомерСтроки,
НомерКолонки).Value
=
Значение;
НомерСтроки, НомерКолонки - номер строки и номер
колонки, на пересечении которых находится ячейка.
И в конце нужно произвести запись созданной книги:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
ПутьКФайлу - полный путь к файлу книги Excel (включая имя).
Важно: не забывайте, что в имени файлов не должно содержаться символов \ / : * ? " > < |.
Часто используемые методы для чтения/установки значений в 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 - тонкая сплошная. |
Постоянный адрес статьи http://exp-1c.narod.ru/articles/articl01.htm
|