Формирование Excel документов на основании данных инфоблока | REDs group
REDS Group
ул. Большая Академическая, дом 5, стр. 1, Москва.
Формирование Excel документов на основании данных инфоблока

Формирование Excel документов на основании данных инфоблока

128

Формировать данные из инфоблока можно в различных форматах, в том числе и Excel. Для создания документа Excel на основании шаблона с динамическими данными из инфоблока bitrix используем библиотеку PHPExcel.

Для выгрузки данных в формате Excel необходимо выполнить следующие действия:

  1. Скачать библиотеку можно тут: https://github.com/PHPOffice/PHPExcel

    При использовании данной библиотеки в CMS 1С:Битрикс возможно появление ошибок, связанных с mbstring.func_overload. Чтобы их избежать, необходимо закомментировать следующие строчки в файле \PhpExcel\Autoloader.php

    if (ini_get('mbstring.func_overload') & 2) {
        throw new PHPExcel_Exception('Multibyte function overloading in PHP must be disabled for string functions (2).');
    }
    
  2. Подключить библиотеки к файлу
    include_once 'PHPExcel.php';
    
  3. Основные функции для работы с файлом
    $objPHPExcel = new PHPExcel(); //создание объекта excel
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');  //присвоение типа файла шаблона
    $objPHPExcel = $objReader->load('template.xlsx'); //загрузка шаблона
    $objPHPExcel->setActiveSheetIndex(0); //Присвоение активности листа
    $sheet = $objPHPExcel->getActiveSheet(); 
    $sheet->setCellValue("B1", 'TEST'); //Добавление текста в ячейку
    $sheet->NewRowBefore("B2", 1);  //Добавление новой строки
    $sheet->mergeCells("B1":"C1"); //Объединение ячеек
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
    $objWriter->save("test.xlsx"); //сохранение шаблона со всеми изменениями в новый файл
    
  4. ВАЖНО! При создании шаблона необходимо поставить совместимость с предыдущими версиями

  5. Заполнить шаблон данными.

    Шаблон Exсel файла:

    Пример заполнения:

    include_once 'PHPExcel.php';
    $objPHPExcel = new PHPExcel();
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objPHPExcel = $objReader->load('template.xlsx');
    $objPHPExcel->setActiveSheetIndex(0);
    $sheet = $objPHPExcel->getActiveSheet();
    $sheet->setCellValue("A2", 'Товар1');
    $sheet->setCellValue("B2", '1');
    $sheet->setCellValue("C2", '200');
    $sheet->NewRowBefore("A2", 1);
    $sheet->setCellValue("A3", 'Товар2');
    $sheet->setCellValue("B3", '1');
    $sheet->setCellValue("C3", '500');
    $sheet->mergeCells("B4":"C4");
    $sheet->setCellValue("B4", '700');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
    $objWriter->save("test.xlsx");
    

    Результат:

05.04.2018 / Кутенина Ксения
Комментарии (0)