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

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

48

Формировать данные из инфоблока можно в различных форматах, в том числе и 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)