Excel cells 1с
Работа с Excel в 1С 8.3
Excel — это сторонняя программа, ее можно запускать из 1С в невидимом и видимом режиме и пользоваться всеми возможностями. Excel должен быть установлен на компьютере. Для примера приведено чтение таблицы в из файла Excel на клиенте, передача на сервер и создание на сервере таблицы значений с данными из файла. Такую задачку любят давать на собеседованиях на должность программиста 1С.
&НаКлиенте
Процедура НажатиеКноки ()
// обращаемся к Excel
Попытка
Эксель = новый COMОбъект ( «Excel.Application» );
Исключение
Сообщить ( ОписаниеОшибки ());
Возврат;
КонецПопытки;
ПутьКФайлу = «C:Некоторый файл.xlsx» ;
// открываем ексель файл
Книга = Эксель . WorkBooks . Open ( ПутьКФайлу );
// переходим на первую страницу
Лист = Книга . WorkSheets ( 1 );
// для количества колонок и строк в экселе есть специальные ячейки
ВсегоКолонок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Column ;
ВсегоСтрок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Row ;
// сохраняем файл в массив строк, где строка это так же массив (на клиенте
// нельзя создавать таблицу значений
НаборСтрокФайла = новый массив ;
для Строка = 1 по ВсегоСтрок цикл
МассивСтрока = новый массив ;
для Колонка = 1 по ВсегоКолонок цикл
// получаем значение из ячейки excel
Значение = СокрЛП ( Лист . Cells ( Строка , Колонка ). Value );
МассивСтрока . Добавить ( Значение );
КонецЦикла;
НаборСтрокФайла . Добавить ( МассивСтрока );
КонецЦикла;
// запишем файл с другим именем
Эксель . SaveAs ( «C:ФайлСДругимИменем.xlsx» );
// закрываем ексель, иначе он останется висеть в памяти
Эксель . Application . Quit ();
&НаСервере
Процедура СоздатьИОбработатьТаблицуЗначений ( НаборСтрокФайла , ВсегоКолонок )
ТЗ = новый ТаблицаЗначений ;
// создаем колонки таблицы значений (столько сколько в файле ексель)
для й = 1 по ВсегоКолонок цикл
ТЗ . Колонки . Добавить ( «кол» + Формат(й, «ЧЦ=4; ЧГ=» ));
КонецЦикла;
// переносим строки из массива в таблицу значений
для каждого МассивСтрока из НаборСтрокФайлацикл
НовСтрока = ТЗ . Добавить ();
для Колонка = 1 по ВсегоКолонок цикл
// переносим значение из массива в таблицу
НовСтрока [ Колонка — 1 ] = МассивСтрока [ Колонка — 1 ];
КонецЦикла;
КонецЦикла;
Далее приводятся наиболее частые ситуации, возникающие на
Поиск и замена текста в ячейках файла Excel
//Выбираем область поиска — весь лист
ОбластьПоиска = Лист . Cells ;
// Начинаем поиск с левого верхнего угла
НачалоЛиста = Лист . Cells ( 1 , 1 );
// Ищем ячейку с текстом «привет»
ОбластьПараметр = ОбластьПоиска . Find ( «привет» , НачалоЛиста );
// Если нашли вывсодим найденую строку
Если ОбластьПараметр <> неопределено Тогда
Сообщить ( ОбластьПараметр . Value ) ;
КонецЕсли ;
Работа со строками в Excel
//Выбираем первую строку
НачальнаяСтрока = Лист . Cells ( 1 , 1 );
// Выделяем всю строку
НачальнаяСтрока . EntireRow . Select ();
// Копируем выделенное
НачальнаяСтрока . EntireRow . Copy ();
// Вставляем (новая строка будет вставлена тут же)
НачальнаяСтрока . EntireRow . Insert ();
// Удалим строку
НачальнаяСтрока . EntireRow . Delete ();
Прочие полезные методы 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(НомерКолонки).ColumnW > | Задание ширины колонке. |
Лист.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 — тонкая сплошная. |
Лист.Protect(); | Установка защиты на лист |
Лист.UnProtect(); | Снятие защиты с листа |
Лист.Cells(Строка, Столбец).Locked=0; | Ячейка будет доступной (и после установки защиты на лист) |
Эксель.DisplayAlerts = False; | Убрать все сообщение при открытии файла. Сообщения останавливают выполнения кода до реакции пользователя |
Работа с Excel в 1С 8.3: 2 комментария
Считываются все Листы Excel. Не понятно как считать только один Лист? Наконец 1С родила долгожданный функционал!
1С и Excel. таблица функций Excel доступных из 1С
Многие знают, что Excel гораздо старше 1С. На мой взгляд, это очень успешный продукт, и нареканий о нем я не слышал. Excel прост и универсален. Он способен выполнять не только простые арифметические операции, но и сложные вычисления, построение графиков и т.п. Знаю примеры, когда организации до перехода на 1С вели часть бухгалтерии в Excel. Многие и сейчас параллельно используют две программы. В этой статье рассмотрим способы обмена данными между 1С и Excel.
Таблицы 1С и Excel.
Многие пользователи для удобства работы сохраняют таблицы 1С (печатные формы) в формате Excel (*.xls). После чего в полученном файле делают различные группировки, сортировки, вычисления и т.п. Связано это с тем, что в таблицах 1С нет такого огромного функционала как в таблицах Excel. Но в версии 1С 8.0 есть нововведения, делающих работу с таблицами более комфортной.
Замечание: В 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. |
0 — Excel не виден, 1 — виден. | |
Создание новой книги (файла) Excel. | |
Сохранение книги Excel. | |
Добавление нового листа в книгу. | |
Открытие существующей книги (файла) Excel. | |
Установка листа в качестве рабочего с номером НомерЛиста. | |
Задание рабочему листу имени ИмяЛиста | |
Задание параметра страницы «Масштаб» (от 10 до 400). | |
Ориентация: 1 — книжная, 2 — альбомная. | |
Задание левой границы (в сантиметрах). | |
Задание верхней границы (в сантиметрах). | |
Задание правой границы (в сантиметрах). | |
Задание нижней границы (в сантиметрах). | |
Задание ширины колонке. | |
Ввод данных в ячейку. | |
Установка шрифта в ячейке. | |
Установка размера шрифта в ячейке. | |
1 — жирный шрифт, 0 — нормальный. | |
1 — наклонный шрифт, 0 — нормальный. | |
2 — подчеркнутый, 1 — нет. | |
Установка формата данных ячейки. | |