Код: Выделить всё
// Массив для виджета ExportMenu
$array_excel = [
'dataProvider' => $dataProvider,
'columns' => $gridColumns,
// Имя файла .xlsx
'filename' => 'Giptel',
'autoWidth' => false,
// Название полей, убираем заливку
'styleOptions' =>
[
ExportMenu::FORMAT_EXCEL_X => [
'font' => [
'bold' => true,
'color' => [
'argb' => '000000',
],
],
// Выравнивание по центру
'alignment' => [
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
'vertical' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
],
'fill' => [
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'startcolor' => [
'argb' => 'F5F5F5',
],
'endcolor' => [
'argb' => 'F5F5F5',
],
],
],
],
// Отключение окна подтверждения
'showConfirmAlert' => false,
'exportConfig' => [
ExportMenu::FORMAT_TEXT => false,
ExportMenu::FORMAT_PDF => false,
ExportMenu::FORMAT_CSV => false,
ExportMenu::FORMAT_HTML => false,
],
'onInitSheet' => function (PHPExcel_Worksheet $sheet, $grid) {
// Альбомная ориентация
// $sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
//Верхний контитул
$sheet->getHeaderFooter()->setOddHeader('&C&17 Заявки на &D в &T ' . Yii::$app->user->identity->name);
//Нижний контитул
$sheet->getHeaderFooter()->setOddFooter('&C&B&11Страница &P из &N');
// Лист А4
$sheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
// Страницу по центру
$sheet->getPageSetup()->setHorizontalCentered(true);
// Повторение первой строки
$sheet->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1);
// Показать сетку
$sheet->setPrintGridlines(true);
// Вписать все столбцы на одну страницу
$sheet->getPageSetup()->setFitToHeight(0);
// $sheet->getProtection()->setSheet(false);
// Убрать отступы
$sheet->getPageMargins()->setLeft(0);
$sheet->getPageMargins()->setRight(0);
$sheet->getPageMargins()->setTop(0.4);
$sheet->getPageMargins()->setHeader(0);
$sheet->getPageMargins()->setBottom(0);
$sheet->getPageMargins()->setFooter(0);
$styleArray = [
// Выравнивание по центру
'alignment' => [
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
'vertical' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
],
];
//$sheet->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Выравнивание по центру + перенос по словам (Диапазон ячеек, квадрат A2:G100)
$sheet->getStyle('A2:G100')->applyFromArray($styleArray)->getAlignment()->setWrapText(true);
// Ширина колонок
// Дата
$sheet->getColumnDimension('A')->setWidth(18);
// Адрес
$sheet->getColumnDimension('B')->setWidth(30);
// Ящик
$sheet->getColumnDimension('C')->setWidth(30);
// Номер телефона
$sheet->getColumnDimension('D')->setWidth(15);
// Перенос по словам
$sheet->getStyle('D')->getAlignment()->setWrapText(true);
// Описание
$sheet->getColumnDimension('E')->setWidth(45);
// Перенос по словам
$sheet->getStyle('E')->getAlignment()->setWrapText(true);
// Приоритет
$sheet->getColumnDimension('F')->setWidth(19);
$ArrStyle = array(
'font' => array(
'size' => 12,
));
$sheet->getStyle('A')->applyFromArray($ArrStyle);
$sheet->getStyle('B')->applyFromArray($ArrStyle);
$sheet->getStyle('C')->applyFromArray($ArrStyle);
$sheet->getStyle('D')->applyFromArray($ArrStyle);
$sheet->getStyle('E')->applyFromArray($ArrStyle);
$sheet->getStyle('F')->applyFromArray($ArrStyle);
},
'columns' => [
// Дата
[
'attribute' => 'date',
'format' => 'raw',
'value' => function($model) {
return substr($model->date, 0, -3);
},
],
// Адрес (Title заявки)
[
'attribute' => 'title',
'format' => 'raw',
],
// Ящик
[
'attribute' => 'box',
],
// Номер телефона
[
'attribute' => 'mob',
],
// Описание
[
'attribute' => 'text',
'format' => 'raw',
// Заменяем на пробел
'value' => function($model)
{
return str_replace(" ", " ", $model->text);
},
],
// 'type',
// Приоритет
[
'attribute' => 'priority',
'format' => 'raw',
'value' => function($model)
{
switch($model->priority)
{
case 1:
return 'Высокий';
break;
case 2:
return 'Средний';
break;
case 3:
return 'Низкий';
break;
default :
return 'Неизвестный статус';
}
},
],
// Автор
[
'attribute' => 'author',
'format' => 'raw',
'value' => function($model)
{
switch($model->author)
{
case 1:
return 'Влад';
break;
case 2:
return 'Евгений';
break;
case 3:
return 'Паша';
break;
case 4:
return 'Егор';
break;
default :
return 'Неизвестный автор';
}
},
],
],
];
// Экспорт в Excel на странице открытых заявок
if (isset($_REQUEST['type']) && $_REQUEST['type'] == 'team' || isset($_REQUEST['type']) && $_REQUEST['type'] == 'admins')
{
// Вывод кнопок экспорт в Excel
echo "<br/><div align='center'>".ExportMenu::widget($array_excel)."</div><br/>";
};
Код: Выделить всё
// Выбор заявок Checkboxs
[
'class' => 'yii\grid\CheckboxColumn',
'checkboxOptions' => function($model, $key, $index, $widget) {
return ['value' => $model['id'] ];
},
'name' => 'id'
],
Расширение: https://github.com/kartik-v/yii2-export