Для экспорта в excel из Laravel будем использовать пакет maatwebsite/excel , который использует для своей работы PHPExcel.
Подключение пакета
Для установки пакета maatwebsite/excel необходимо запустить команду:
composer require maatwebsite/excel
Затем открываем файл app/config/app.php, находим в нем массив 'providers' и добавляем туда новый сервис-провайдер:
'Maatwebsite\Excel\ExcelServiceProvider',
В этом же файле есть массив 'aliases' - в нем хранятся псевдонимы для фасадов. Добавим в этот массив псевдоним для фасада Excel:
'Excel' => 'Maatwebsite\Excel\Facades\Excel',
Далее необходимо обновить конфигурацию Laravel с помощью команды:
php artisan vendor:publish
Теперь, прописав в контроллере use Excel;
мы можем использовать фасад Excel для своих целей.
Создание экспортируемого файла
Для создания файла используется метод:
Excel::create('Filename');
Чтобы изменить файл по нашему усмотрению - используем функцию-замыкание:
Excel::create('Filename', function($excel) {
// Call writer methods here
});
Изменение свойств документа:
Excel::create('Filename', function($excel) {
// Set the title
$excel->setTitle('Our new awesome title');
// Chain the setters
$excel->setCreator('Maatwebsite')
->setCompany('Maatwebsite');
// Call them separately
$excel->setDescription('A demonstration to change the file properties');
});
Загрузка файла
Для загрузки созданного файла используем ->export('формат_файла')
или ->download('формат_файла')
:
Excel::create('Filename', function($excel) {
})->export('xls');
// or
->download('xls');
Создание листов
Для создания листа внутри созданного файла используется ->sheet('Название_листа'
)
:
Excel::create('Filename', function($excel) {
$excel->sheet('Sheetname', function($sheet) {
// Sheet manipulation
});
})->export('xls');
Создание нескольких листов:
Excel::create('Filename', function($excel) {
// первый лист
$excel->sheet('First sheet', function($sheet) {
});
// второй лист
$excel->sheet('Second sheet', function($sheet) {
});
})->export('xls');
Изменение свойств листа
Все настройки хранятся в файле app/config/packages/maatwebsite/excel/config.php
Изменение ориентации листа:
Excel::create('Filename', function($excel) {
$excel->sheet('Sheetname', function($sheet) {
$sheet->setOrientation('landscape');
});
})->export('xls');
Для изменения отступов нужно использовать ->setPageMargin():
// Установить верхний, правый, нижний, левый отступ
$sheet->setPageMargin(array(0.25, 0.30, 0.25, 0.30));
// установить все поля
$sheet->setPageMargin(0.25);
Стилизация листа
Для изменения стиля всего листа используем метод ->setStyle()
:
Excel::create('Filename', function($excel) {
$excel->sheet('Sheetname', function($sheet) {
// Изменение стиля шрифта
$sheet->setStyle(array(
'font' => array(
'name' => 'Calibri',
'size' => 15,
'bold' => true
)
));
});
})->export('xls');
Для изменения шрифта используем ->setFont($array)
:
$sheet->setFont(array(
'family' => 'Calibri',
'size' => '15',
'bold' => true
));
Изменение границ листа:
// Sets all borders
$sheet->setAllBorders('thin');
// Set border for cells
$sheet->setBorder('A1', 'thin');
// Set border for range
$sheet->setBorder('A1:F10', 'thin');
Ширина столбцов:
// Ширина одного столбца
$sheet->setWidth('A', 5);
// Установка ширины для нескольких столбцов
$sheet->setWidth(array(
'A' => 5,
'B' => 10
));
Высота строк:
// Set height for a single row
$sheet->setHeight(1, 50);
// Set height for multiple rows
$sheet->setHeight(array(
1 => 50,
2 => 25
));
Для установки размера ячеек используем метод ->setSize($cell, $width, $height)
:
// Устанавливаем размер одной ячейки
$sheet->setSize('A1', 500, 50);
$sheet->setSize(array(
'A1' => array(
'width' => 50
'height' => 500,
)
));
Работа со строками
Вставка значений в ячейки строки:
// первая строка
$sheet->row(1, array(
'test1', 'test2'
));
// вторая строка
$sheet->row(2, array(
'test3', 'test4'
));
Изменение стиля ячеек для строки:
// Установка черного цвета
$sheet->row(1, function($row) {
// вызов метода
$row->setBackground('#000000');
});
Добавление строки:
// добавление строки после 2 строки
$sheet->appendRow(2, array(
'appended', 'appended'
));
//добавление строки после последней
$sheet->appendRow(array(
'appended', 'appended'
));
Добавление строки перед строкой:
// добавление перед первой строкой
$sheet->prependRow(1, array(
'prepended', 'prepended'
));
// добавление первой строки
$sheet->prependRow(array(
'prepended', 'prepended'
));
Добавление сразу нескольких строк:
// Добавление нескольких строк
$sheet->rows(array(
array('test1', 'test2'),
array('test3', 'test4')
));
// Добавление нескольких строк
$sheet->rows(array(
array('test5', 'test6'),
array('test7', 'test8')
));
Работа с ячейками
$sheet->cell('A1', function($cell) {
// изменение ячейки A1
});
$sheet->cells('A1:A5', function($cells) {
// изменение диапазона ячеек
});
Установка цвета фона ячеек:
// Set black background
$cells->setBackground('#000000');
Изменение шрифта внутри ячеек:
// Set with font color
$cells->setFontColor('#ffffff');
// Set font family
$cells->setFontFamily('Calibri');
// Set font size
$cells->setFontSize(16);
// Set font weight to bold
$cells->setFontWeight('bold');
// Set font
$cells->setFont(array(
'family' => 'Calibri',
'size' => '16',
'bold' => true
));
Установка границ ячеек:
// Set all borders (top, right, bottom, left)
$cells->setBorder('solid', 'none', 'none', 'solid');
// Set borders with array
$cells->setBorder(array(
'borders' => array(
'top' => array(
'style' => 'solid'
),
)
));
Горизонтальное выравнивание:
// Выравнивание по центру
$cells->setAlignment('center');
Вертикальное выравнивание:
// вертикальное выравнивание по центру
$cells->setValignment('center');
Использование нативных методов PHPExcel
Есть возможность вызывать нативные методы PHPExcel для объектов $excel
и $sheet:
// Установка стилей по умолчанию
$excel->getDefaultStyle();
// Защита ячеек
$sheet->protectCells('A1', $password);
Обновлено: 19.06.2017
Вам помогла эта статья? Оцените!