kebacorp / arrayexcelbuilder
The extension creates an Excel file from the data array.
Package info
github.com/KebaCorp/ArrayExcelBuilder
Type:extension
pkg:composer/kebacorp/arrayexcelbuilder
Requires
- php: ^5.6|^7.0|^8.0
- ext-json: *
- dompdf/dompdf: ^0.8.3
- mpdf/mpdf: ^8.0.4
- phpoffice/phpspreadsheet: ^1.14.1
- tecnickcom/tcpdf: ^6.2.13
Requires (Dev)
- symfony/cache: ^4.3
- dev-master
- v4.2.0
- v4.1.0
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.0
- v2.3.0
- v2.2.1
- 2.2.0
- v2.1.0
- v2.0.1
- v2.0.0
- v1.11.0
- v1.10.0
- v1.9.1
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- 1.0.0
- dev-dependabot/composer/dompdf/dompdf-2.0.2
- dev-feature/SheetNameReplacement
- dev-feature/Dependencies
- dev-bugfix/ZeroValue
- dev-feature/QMT3-MPDF
- dev-feature/Optimization_2
- dev-feature/QMT3-Docker
- dev-feature/Cache
- dev-feature/XDebug
- dev-feature/PageOrientation
- dev-feature/Optimization
- dev-features/Docker
- dev-bugfix/GlobalParams
- dev-features/LoadFromFile
- dev-features/Url
- dev-features/ProtectSheets
- dev-features/Callback
- dev-features/MatrixData
- dev-features/Image
This package is auto-updated.
Last update: 2026-03-17 16:56:00 UTC
README
ArrayExcelBuilder
The component CREATES an Excel file from the data array or READS from Excel file to array.
Based on PHPOffice/PhpSpreadsheet
For license information check the LICENSE-file.
Requirements:
- PHP 5.6 and higher.
- PHP 7.4 is supported since ArrayExcelBuilder v4.0.1
Installation:
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist kebacorp/arrayexcelbuilder
or add
"kebacorp/arrayexcelbuilder": "*"
to the require section of your composer.json.
Usage:
"Hello world!" example
<?php
use KebaCorp\ArrayExcelBuilder\ArrayExcelBuilder;
// Array data
$data = [
// Sheet 1
[
// Sheet options
'sheetName' => 'Hello world page',
'data' => [
// Column 1
[
// Row 1
[
// Cell options
'value' => 'Hello world!',
],
// Row n...
],
// Column n...
],
],
// Sheet n...
];
// Create excel file from array
$arrayExcelBuilder = new ArrayExcelBuilder($data);
$arrayExcelBuilder->save();
?>
Matrix data example
<?php
use KebaCorp\ArrayExcelBuilder\ArrayExcelBuilder;
// Array data
$data = [
// Sheet 1
[
// Sheet options
'sheetName' => 'Hello world page',
'data' => [
// Column 1
[
'Hello world!', // Row 1
true, // Row 2
100500, // Row 3
'Other value', // Row 4
[ // Row 4
'value' => 'I can configure the cell in more detail',
// Other cell options...
],
// Row n...
],
// Column 2
[
'Hello world!', // Row 1
true, // Row 2
100500, // Row 3
10 => 'Other value', // Row 9
// Row n...
],
// Column n...
],
],
// Sheet n...
];
// Create excel file from array
$arrayExcelBuilder = new ArrayExcelBuilder($data);
$arrayExcelBuilder->save();
?>
Sheet parameter "isRowDirection" example
<?php
use KebaCorp\ArrayExcelBuilder\ArrayExcelBuilder;
// Array data
$data = [
// Sheet 1
[
// Sheet options
'sheetName' => 'Hello world page',
'isRowDirection' => true,
'data' => [
// Row 1
[
'Hello world!', // Column 1
true, // Column 2
100500, // Column 3
'Other value', // Column 4
// Column n...
],
// Row 2
[
'Hello world!', // Column 1
true, // Column 2
100500, // Column 3
'Other value', // Column 4
// Column n...
],
// Row n...
],
],
// Sheet n...
];
// Global cell params
$globalParams = [];
// Create excel file from array
$arrayExcelBuilder = new ArrayExcelBuilder($data, $globalParams);
$arrayExcelBuilder->save();
?>
Рекомендации:
-
Рекомендуется использовать глобальные параметры, вместо одинаковых параметров у каждой ячейки, если необходимо настроить все или большинство ячеек одинаково.
-
Каждый параметр увеличивает время создания файла. Поэтому один параметр "styleArray" (массив с настройками стиля ячейки) будет исполняться существенно быстрее, чем аналогичные параметры (borderBottom, bold, fontColor, fontSize и т. д.) по отдельности.
-
Не рекомендуется использовать в качестве ключей массивов колонок и строк не числа. Позиция следующей ячейки в таком случае может сбиться!
Полезно знать:
- Позиция ячейки относительно ключа массива:
Если массив с данными будет ассоциативным, и ключи будут в виде цифр, то ячейка будет расположена относительно ключа. Отсчет начинается с нуля.
Например:
<?php
$data = [
1 => [
8 => ['value' => 'Hello, World!']
]
];
В данном примере текст "Hello, World!" будет расположен в ячейке "B9".
Params:
Sheet options
| Name | Type | Default | Description |
|---|---|---|---|
| autoSize | bool | false | Авторазмер ячеек. Если у ячейки задана ширина, то "autoSize" будет проигнорирован. |
| charts | array | none | Массив данных для создания графиков. Подробнее в Charts. |
| data | array | none | Массив данных. Обязательный параметр. |
| freezeCell | string | none | Зафиксировать ячейки по координату. Например 'B2' - зафиксирует первую строку и первый столбец. |
| isRowDirection | bool | false | Заполнять данные построчно, либо по колонкам. По умолчанию заполнение по колонкам. |
| sheetName | string | auto generate | Заголовок страницы. Если не передавать данный параметр, либо передать пустую строку, то название сгенерируется автоматически. |
| sheetNameInvalidCharactersReplacement | string | ' ' | Заменитель недопустимых символов в заголовке страницы. |
| showGridLines | bool | true | Отобразить сетку. |
Global cell options
| Name | Type | Default | Description |
|---|---|---|---|
| allBorderBottom | string | 'none' | Рамка у всех ячеек снизу: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| allBorderRight | string | 'none' | Рамка у всех ячеек справа: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| allBorderLeft | string | 'none' | Рамка у всех ячеек слева: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| allBorderTop | string | 'none' | Рамка у всех ячеек сверху: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| allBorderBottomColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "allBorderBottom". Цвет заливки рамки у всех ячеек снизу. HEX без #. Например: 'FFFFFF'. |
| allBorderRightColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "allBorderRight". Цвет заливки рамки у всех ячеек справа. HEX без #. Например: 'FFFFFF'. |
| allBorderLeftColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "allBorderLeft". Цвет заливки рамки у всех ячеек слева. HEX без #. Например: 'FFFFFF'. |
| allBorderTopColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "allBorderTop". Цвет заливки рамки у всех ячеек сверху. HEX без #. Например: 'FFFFFF'. |
| bold | bool | false | Жирный шрифт. |
| borderBottom | string | 'none' | Рамка у ячейки снизу: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderRight | string | 'none' | Рамка у ячейки справа: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderLeft | string | 'none' | Рамка у ячейки слева: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderTop | string | 'none' | Рамка у ячейки сверху: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderVertical | string | 'none' | Вертикальная рамка у ячейки: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderHorizontal | string | 'none' | Горизонтальная рамка у ячейки: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderBottomColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderBottom". Цвет заливки рамки у ячейки снизу. HEX без #. Например: 'FFFFFF'. |
| borderRightColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderRight". Цвет заливки рамки у ячейки справа. HEX без #. Например: 'FFFFFF'. |
| borderLeftColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderLeft". Цвет заливки рамки у ячейки слева. HEX без #. Например: 'FFFFFF'. |
| borderTopColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderTop". Цвет заливки рамки у ячейки сверху. HEX без #. Например: 'FFFFFF'. |
| borderVerticalColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderVertical". Цвет заливки вертикальной рамки у ячейки. HEX без #. Например: 'FFFFFF'. |
| borderHorizontalColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderHorizontal". Цвет заливки горизонтальной рамки у ячейки. HEX без #. Например: 'FFFFFF'. |
| callback | function | null | Функция обратного вызова. Вызывается во время формирования ячейки. Принимает один аргумент в виде массивов данных (см. Global callback arguments). Для того, чтобы изменения применились, необходимо вернуть измененный аргумент. |
| columnWidth | integer | auto | Ширина колонки. Если параметр передан нескольким ячейкам, значение будет использовано из последней ячейки в данной колонке. |
| fillColor | HEX color string | '' | Цвет заливки ячейки HEX без #. Например: 'FFFFFF'. |
| fontColor | HEX color string | '' | Цвет текста HEX без #. Например: '000000'. |
| fontSize | integer | excel default size | Размер шрифта. |
| hAlignment | string | 'general' | Горизонтальное выравнивание текста: general, left, right, center, centerContinuous, justify, fill, distributed - Excel2007 only. |
| vAlignment | string | 'bottom' | Вертикальное выравнивание текста: bottom, top, center, justify, distributed - Excel2007 only. |
| protect | bool | false | Защитить страницы от редактирования. |
| rowHeight | integer | auto | Высота строки. Если параметр передан нескольким ячейкам, значение будет использовано из последней ячейки в данной строке. |
| styleArray | array | [] | Массив стилей. Смотрите Style array. |
| value | string, number, bool | null | Значение ячейки. Значение может быть строкой, числом, числом с точкой, булевым значением. Остальные типы кодируются в Json. Если необходимо ввести текст на следующей строке в ячейке, то можно использовать "\n" (ВАЖНО! Текст должен быть в двойных кавычках!). Например: "Текст на первой строке\nТекст на второй строке". Вы также можете вставить формулу в ячейку. Для этого необходимо вставить формулу в виде строки. Например: '=SUM(B2:C2)' |
| wrapText | bool | false | Перенос строки. |
Cell options
Все параметры ячейки:
| Name | Type | Default | Description |
|---|---|---|---|
| bold | bool | false | Жирный шрифт. |
| borderBottom | string | 'none' | Рамка у ячейки снизу: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderRight | string | 'none' | Рамка у ячейки справа: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderLeft | string | 'none' | Рамка у ячейки слева: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderTop | string | 'none' | Рамка у ячейки сверху: none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin. |
| borderBottomColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderBottom". Цвет заливки рамки у ячейки снизу. HEX без #. Например: 'FFFFFF'. |
| borderRightColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderRight". Цвет заливки рамки у ячейки справа. HEX без #. Например: 'FFFFFF'. |
| borderLeftColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderLeft". Цвет заливки рамки у ячейки слева. HEX без #. Например: 'FFFFFF'. |
| borderTopColor | HEX color string | '000000' | ВНИМАНИЕ! Необходимо установить "borderTop". Цвет заливки рамки у ячейки сверху. HEX без #. Например: 'FFFFFF'. |
| callback | function | null | Функция обратного вызова. Вызывается во время формирования ячейки. Принимает один аргумент в виде массивов данных (см. Cell callback arguments). Для того, чтобы изменения применились, необходимо вернуть измененный аргумент. |
| columnWidth | integer | auto | Ширина колонки. Если параметр передан нескольким ячейкам, значение будет использовано из последней ячейки в данной колонке. |
| comment | string | '' | Комментарий ячейки. Если передать пустую строку, то комментарий не будет создан. |
| fillColor | HEX color string | '' | Цвет заливки ячейки HEX без #. Например: 'FFFFFF'. |
| fontColor | HEX color string | '' | Цвет текста HEX без #. Например: '000000'. |
| fontSize | integer | excel default size | Размер шрифта. |
| hAlignment | string | 'general' | Горизонтальное выравнивание текста: general, left, right, center, centerContinuous, justify, fill, distributed - Excel2007 only. |
| vAlignment | string | 'bottom' | Вертикальное выравнивание текста: bottom, top, center, justify, distributed - Excel2007 only. |
| image | string, array | none | Если передать строку, то значение запишется как путь к изображению. Путь может быть как относительным, так и абсолютным. Например: 'img/example.jpg'. Либо можно передать массив параметров. Смотрите Image array data. |
| mergeColumns | integer | 0 | Кол-во ячеек справа, которое необходимо присоединить к текущей ячейке. ВНИМАНИЕ! Сделует избегать пересечения слияния с соседними ячейками! |
| mergeRows | integer | 0 | Кол-во ячеек снизу, которое необходимо присоединить к текущей ячейке. ВНИМАНИЕ! Сделует избегать пересечения слияния с соседними ячейками! |
| rowHeight | integer | auto | Высота строки. Если параметр передан нескольким ячейкам, значение будет использовано из последней ячейки в данной строке. |
| styleArray | array | [] | Массив стилей. Смотрите Style array. |
| url | string | null | Ячейка со ссылкой на внешний ресурс, либо ссылка на другую страницу внутри документа. Например: 'sheet://"Sheet name"!A1' или 'www.example.com' |
| value | string, number, bool | null | Значение ячейки. Значение может быть строкой, числом, числом с точкой, булевым значением. Остальные типы кодируются в Json. Если необходимо ввести текст на следующей строке в ячейке, то можно использовать "\n" (ВАЖНО! Текст должен быть в двойных кавычках!). Например: "Текст на первой строке\nТекст на второй строке". Вы также можете вставить формулу в ячейку. Для этого необходимо вставить формулу в виде строки. Например: '=SUM(B2:C2)' |
| wrapText | bool | false | Перенос строки. |
Full example:
<?php
use KebaCorp\ArrayExcelBuilder\ArrayExcelBuilder;
// Array data
$data = [
// Sheet 1
[
// Sheet options
'autoSize' => false,
'sheetName' => 'First page',
'freezeCell' => 'B2',
'isRowDirection' => true,
'showGridLines' => false,
'data' => [
// Column 1
[
// Row 1
[
// Cell options
'value' => 'John',
'fontColor' => 'ffffff',
'fillColor' => '4f81bd',
'fontSize' => 10,
'bold' => true,
'hAlignment' => 'center',
'vAlignment' => 'top',
'wrapText' => false,
'comment' => 'John is cool boy.',
'mergeColumns' => 4,
'mergeRows' => 3,
'borderBottom' => 'dashDot',
'borderTop' => 'dotted',
'borderLeft' => 'mediumDashDotDot',
'borderRight' => 'hair',
'borderBottomColor' => '000000',
'borderTopColor' => '000000',
'borderLeftColor' => '000000',
'borderRightColor' => '000000',
'columnWidth' => 100,
'rowHeight' => 20,
'url' => 'www.example.com', // or 'sheet://"Sheet name"!A1'
'image' => [ // or 'image' => 'img/example.jpg',
'path' => 'img/example.jpg',
'name' => 'Example',
'description' => 'Example image',
'offsetX' => 10,
'offsetY' => 15,
'width' => 200,
'height' => 300,
'resizeProportional' => true,
'rotation' => 70,
'hyperLink' => [ // or 'hyperLink' => 'www.example.com',
'url' => 'www.example.com',
'tooltip' => 'Example site',
],
],
'callback' => function($data) {
$data['spreadsheet']->getActiveSheet()->getCell($data['cell'])->setValue('Cell value');
return $data;
},
'styleArray' => [
'font' => [
'name' => 'Arial',
'bold' => true,
'italic' => false,
'underline' => 'double', // none, double, doubleAccounting, single, singleAccounting
'strikethrough' => false,
'color' => [
'rgb' => '808080'
],
'size' => 15,
'superscript' => true,
'subscript' => true,
],
'fill' => [
'fillType' => 'solid', // none, solid, linear, path, darkDown, darkGray, darkGrid, darkHorizontal, darkTrellis, darkUp, darkVertical, gray0625, gray125, lightDown, lightGray, lightGrid, lightHorizontal, lightTrellis, lightUp, lightVertical, mediumGray
'rotation' => 10.5, // Type: float
'startColor' => [
'rgb' => '000000'
],
'endColor' => [
'argb' => 'FFFFFFFF'
],
'color' => [
'rgb' => '000000'
],
],
'alignment' => [
'horizontal' => 'center', // general, left, right, center, centerContinuous, justify, fill, distributed - Excel2007 only
'vertical' => 'center', // bottom, top, center, justify, distributed - Excel2007 only
'wrapText' => false, // Type: bool
'textRotation' => 0, // Type: integer
'shrinkToFit' => false, // Type: bool
'indent' => 0, // Type: integer
],
'borders' => [
'allBorders' => [
'borderStyle' => 'dashDot', // none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin
'color' => [
'argb' => 'FFFFFFFF'
]
],
'bottom' => [
'borderStyle' => 'dashDot',
'color' => [
'rgb' => '808080'
]
],
'top' => [
'borderStyle' => 'dashed',
'color' => [
'rgb' => '808080'
]
],
'left' => [
'borderStyle' => 'mediumDashDot',
'color' => [
'rgb' => '808080'
]
],
'right' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'diagonal' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'vertical' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'horizontal' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'outline' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'diagonalDirection' => 1, // DIAGONAL_NONE: 0, DIAGONAL_UP: 1, DIAGONAL_DOWN: 2, DIAGONAL_BOTH: 3
],
'numberFormat' => [
'formatCode' => 'General', // see PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_*
],
'protection' => [
'locked' => 'protected', // inherit, protected, unprotected
'hidden' => 'protected', // inherit, protected, unprotected
],
'quotePrefix' => true,
],
],
// Row 2
[
// Cell options
'value' => 100500,
],
// Row 3
[
// Cell options
'value' => 100.500,
],
// Row 4
[
// Cell options
'value' => true,
],
// Row 5
[
// Cell options
'value' => '=SUM(A2:A3)',
],
// Row n...
],
// Column n...
],
'charts' => [
// Chart 1
[
'name' => 'Chart name',
'title' => 'Chart title',
'xLabel' => 'X axis label',
'yLabel' => 'Y axis label',
'chartType' => 'lineChart',
'groupType' => 'stacked',
'chartStartPosition' => 'B3',
'chartEndPosition' => 'H18',
'isLegend' => true,
'legendPosition' => 'tr',
'labels' => [
// Label 1
[
'dataType' => 'String',
'sheetName' => 'Worksheet',
'column' => 'B',
'row' => 1,
],
// Label n...
],
'xValues' => [
[
'dataType' => 'String',
'sheetName' => 'Worksheet',
'startColumn' => 'A',
'startRow' => 2,
'endColumn' => 'A',
'endRow' => 5,
],
],
'yValues' => [
// Value 1
[
'dataType' => 'String',
'sheetName' => 'Worksheet',
'startColumn' => 'B',
'startRow' => 2,
'endColumn' => 'B',
'endRow' => 5,
],
// Value n...
],
]
// Chart n...
]
],
// Sheet n...
];
// Global cell options
$params = [
'allBorderBottom' => 'dashDot',
'allBorderTop' => 'dotted',
'allBorderLeft' => 'mediumDashDotDot',
'allBorderRight' => 'hair',
'allBorderBottomColor' => '000000',
'allBorderTopColor' => '000000',
'allBorderLeftColor' => '000000',
'allBorderRightColor' => '000000',
'borderBottom' => 'dashDot',
'borderTop' => 'dotted',
'borderLeft' => 'mediumDashDotDot',
'borderRight' => 'hair',
'borderVertical' => 'dashDot',
'borderHorizontal' => 'dotted',
'borderBottomColor' => '000000',
'borderTopColor' => '000000',
'borderLeftColor' => '000000',
'borderRightColor' => '000000',
'borderVerticalColor' => '000000',
'borderHorizontalColor' => '000000',
'value' => 'none',
'fontColor' => '',
'fillColor' => '',
'fontSize' => 10,
'bold' => true,
'hAlignment' => 'center',
'vAlignment' => 'top',
'wrapText' => false,
'columnWidth' => 150,
'rowHeight' => 25,
'styleArray' => [
'font' => [
'name' => 'Arial',
'bold' => true,
'italic' => false,
'underline' => 'double', // none, double, doubleAccounting, single, singleAccounting
'strikethrough' => false,
'color' => [
'rgb' => '808080'
],
'size' => 15,
'superscript' => true,
'subscript' => true,
],
'fill' => [
'fillType' => 'solid', // none, solid, linear, path, darkDown, darkGray, darkGrid, darkHorizontal, darkTrellis, darkUp, darkVertical, gray0625, gray125, lightDown, lightGray, lightGrid, lightHorizontal, lightTrellis, lightUp, lightVertical, mediumGray
'rotation' => 10.5, // Type: float
'startColor' => [
'rgb' => '000000'
],
'endColor' => [
'argb' => 'FFFFFFFF'
],
'color' => [
'rgb' => '000000'
],
],
'alignment' => [
'horizontal' => 'center', // general, left, right, center, centerContinuous, justify, fill, distributed - Excel2007 only
'vertical' => 'center', // bottom, top, center, justify, distributed - Excel2007 only
'wrapText' => false, // Type: bool
'textRotation' => 0, // Type: integer
'shrinkToFit' => false, // Type: bool
'indent' => 0, // Type: integer
],
'borders' => [
'allBorders' => [
'borderStyle' => 'dashDot', // none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin
'color' => [
'argb' => 'FFFFFFFF'
]
],
'bottom' => [
'borderStyle' => 'dashDot',
'color' => [
'rgb' => '808080'
]
],
'top' => [
'borderStyle' => 'dashed',
'color' => [
'rgb' => '808080'
]
],
'left' => [
'borderStyle' => 'mediumDashDot',
'color' => [
'rgb' => '808080'
]
],
'right' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'diagonal' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'vertical' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'horizontal' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'outline' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'diagonalDirection' => 1, // DIAGONAL_NONE: 0, DIAGONAL_UP: 1, DIAGONAL_DOWN: 2, DIAGONAL_BOTH: 3
],
'numberFormat' => [
'formatCode' => 'General', // see PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_*
],
'protection' => [
'locked' => 'protected', // inherit, protected, unprotected
'hidden' => 'protected', // inherit, protected, unprotected
],
'quotePrefix' => true,
],
];
// Create excel file from array
$arrayExcelBuilder = new ArrayExcelBuilder($data, $params);
$result = $arrayExcelBuilder->save('excel/Document', ['format' => 'xlsx'], false);
// --- or --- //
// Create excel file from array
$arrayExcelBuilder = new ArrayExcelBuilder($data, $params);
$arrayExcelBuilder->setData($data);
$arrayExcelBuilder->setParams($params);
$result = $arrayExcelBuilder->save('excel/Document', ['format' => 'xlsx'], false);
// --- or --- //
// Create excel file from array
$arrayExcelBuilder = new ArrayExcelBuilder();
$result = $arrayExcelBuilder->setData($data)
->setParams($params)
->save('excel/Document', ['format' => 'xlsx'], false);
?>
Style array
StyleArray - массив стилей ячейки. Доступны все параметры, которые есть у StyleArray в Phpspreadsheet.
<?php
$styleArray = [
'font' => [
'name' => 'Arial',
'bold' => true,
'italic' => false,
'underline' => 'double', // none, double, doubleAccounting, single, singleAccounting
'strikethrough' => false,
'color' => [
'rgb' => '808080'
],
'size' => 15,
'superscript' => true,
'subscript' => true,
],
'fill' => [
'fillType' => 'solid', // none, solid, linear, path, darkDown, darkGray, darkGrid, darkHorizontal, darkTrellis, darkUp, darkVertical, gray0625, gray125, lightDown, lightGray, lightGrid, lightHorizontal, lightTrellis, lightUp, lightVertical, mediumGray
'rotation' => 10.5, // Type: float
'startColor' => [
'rgb' => '000000'
],
'endColor' => [
'argb' => 'FFFFFFFF'
],
'color' => [
'rgb' => '000000'
],
],
'alignment' => [
'horizontal' => 'center', // general, left, right, center, centerContinuous, justify, fill, distributed - Excel2007 only
'vertical' => 'center', // bottom, top, center, justify, distributed - Excel2007 only
'wrapText' => false, // Type: bool
'textRotation' => 0, // Type: integer
'shrinkToFit' => false, // Type: bool
'indent' => 0, // Type: integer
],
'borders' => [
'allBorders' => [
'borderStyle' => 'dashDot', // none, dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin
'color' => [
'argb' => 'FFFFFFFF'
]
],
'bottom' => [
'borderStyle' => 'dashDot',
'color' => [
'rgb' => '808080'
]
],
'top' => [
'borderStyle' => 'dashed',
'color' => [
'rgb' => '808080'
]
],
'left' => [
'borderStyle' => 'mediumDashDot',
'color' => [
'rgb' => '808080'
]
],
'right' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'diagonal' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'vertical' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'horizontal' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'outline' => [
'borderStyle' => 'mediumDashed',
'color' => [
'rgb' => '808080'
]
],
'diagonalDirection' => 1, // DIAGONAL_NONE: 0, DIAGONAL_UP: 1, DIAGONAL_DOWN: 2, DIAGONAL_BOTH: 3
],
'numberFormat' => [
'formatCode' => 'General', // see PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_*
],
'protection' => [
'locked' => 'protected', // inherit, protected, unprotected
'hidden' => 'protected', // inherit, protected, unprotected
],
'quotePrefix' => true,
];
?>
Image array data
| Name | Type | Default | Description |
|---|---|---|---|
| description | string | '' | Описание изображения. |
| height | integer | 20 | Высота изображения. |
| hyperLink | string, array | none | Ссылка на сайт при нажатии на изображение. Может быть как строкой, тогда значение будет записано как ссылка на ресур. Например: 'www.example.com'. Либо можно передать массив параметров. У массива есть два значения - "url" (ссылка на ресурс) и "tooltip" (всплывающая подсказка). Например: ['url' => 'www.example.com', 'tooltip' => 'Это всплывающая подсказка']. |
| name | string | '' | Название изображения. |
| offsetX | integer | 0 | Сдвиг изображения по оси X относительно ячейки. |
| offsetY | integer | 0 | Сдвиг изображения по оси Y относительно ячейки. |
| path | string | '' | Путь к изображению с расширением. Путь может быть как относительным, так и абсолютным. Например: 'img/example.jpg'. |
| resizeProportional | bool | true | Сохранять пропорции изображения при изменении размера. |
| rotation | integer | 0 | Вращение изображения. |
| width | integer | 20 | Ширина изображения. |
<?php
$image = [
'path' => 'img/example.jpg',
'name' => 'Example',
'description' => 'Example image',
'offsetX' => 10,
'offsetY' => 15,
'width' => 200,
'height' => 300,
'resizeProportional' => true,
'rotation' => 70,
'hyperLink' => [ // or 'hyperLink' => 'www.example.com',
'url' => 'www.example.com',
'tooltip' => 'Example site',
],
];
?>
Global callback arguments
ВАЖНО! Callback-функции не запустятся, если в конструктор ArrayExcelBuilder передан параметр "allowCallback" раным false (см. ArrayExcelBuilder constructor arguments).
| Name | Type | Description |
|---|---|---|
| dataDto | ArrayExcelBuilderCellDTO | Данные текущей ячейки в виде DTO. |
| maxCellCoordinates | string | Максимальные координаты ячейки с данными. Самая нижняя правая ячейка. Например "D10". |
| maxColumn | integer | Максимальный индекс колонки с данными. |
| maxRow | integer | Максимальный индекс строки с данными. |
| paramsDto | ArrayExcelBuilderCellDTO | Глобальные параметры ячеек в виде DTO. |
| sheetsNumber | integer | Общее кол-во страниц. |
| spreadsheet | Spreadsheet | Объект класса PhpOffice\PhpSpreadsheet\Spreadsheet. Позволяет использовать практически все возможности библиотеки PhpSpreadsheet. |
Spreadsheet позволяет использовать практически все возможности, которые есть в библиотеке PHPOffice/PhpSpreadsheet.
<?php
$callback = function($data) {
$spreadsheet = $data['spreadsheet'];
$dataDto = $data['dataDto'];
$paramsDto = $data['paramsDto'];
$sheetsNumber = $data['sheetsNumber'];
$maxRow = $data['maxRow'];
$maxColumn = $data['maxColumn'];
$maxCellCoordinates = $data['maxCellCoordinates'];
// Actions with Spreadsheet
$spreadsheet->getActiveSheet()->getCell($data['cell'])->setValue('Cell value');
$data['spreadsheet'] = $spreadsheet;
// IMPORTANT! For the changes to apply, you must return a modified data argument
return $data;
}
?>
Cell callback arguments
ВАЖНО! Callback-функции не запустятся, если в конструктор ArrayExcelBuilder передан параметр "allowCallback" раным false (см. ArrayExcelBuilder constructor arguments).
| Name | Type | Description |
|---|---|---|
| cell | string | Координаты текущей ячейки. Например "B7". |
| columnId | integer | Индекс текущей колонки. Отсчет начинается с нуля. |
| columnName | string | Буквенное обозначение текущей колонки. Например "C". |
| dataDto | ArrayExcelBuilderCellDTO | Данные текущей ячейки в виде DTO. |
| maxCellCoordinates | string | Максимальные координаты ячейки с данными. Самая нижняя правая ячейка. Например "D10". |
| maxColumn | integer | Максимальный индекс колонки с данными. |
| maxRow | integer | Максимальный индекс строки с данными. |
| paramsDto | ArrayExcelBuilderCellDTO | Глобальные параметры ячеек в виде DTO. |
| rowId | integer | Индекс текущей строки. Отсчет начинается с нуля. |
| sheetsNumber | integer | Общее кол-во страниц. |
| spreadsheet | Spreadsheet | Объект класса PhpOffice\PhpSpreadsheet\Spreadsheet. Позволяет использовать практически все возможности библиотеки PhpSpreadsheet. |
Spreadsheet позволяет использовать практически все возможности, которые есть в библиотеке PHPOffice/PhpSpreadsheet.
<?php
$callback = function($data) {
$spreadsheet = $data['spreadsheet'];
$columnId = $data['columnId'];
$rowId = $data['rowId'];
$dataDto = $data['dataDto'];
$paramsDto = $data['paramsDto'];
$columnName = $data['columnName'];
$cell = $data['cell'];
$sheetsNumber = $data['sheetsNumber'];
$maxRow = $data['maxRow'];
$maxColumn = $data['maxColumn'];
$maxCellCoordinates = $data['maxCellCoordinates'];
// Actions with Spreadsheet
$spreadsheet->getActiveSheet()->getCell($data['cell'])->setValue('Cell value');
$data['spreadsheet'] = $spreadsheet;
// IMPORTANT! For the changes to apply, you must return a modified data argument
return $data;
}
?>
ArrayExcelBuilder:
ArrayExcelBuilder constructor arguments
| Name | Type | Default | Description |
|---|---|---|---|
| data | array | [] | Данные ячеек. |
| params | array | [] | Глобальные параметры ячеек. |
| allowCallback | bool | true | Разрешить запуск callback (см. Global cell options или Cell options). Параметр необходим для того, чтобы обезопасить систему от вызова callback-функций, если данные приходят из сторонних источников. |
| cache | CacheInterface | null | Кеширование для уменьшения использования оперативной памяти. Если не передать объект, имплементированный от CacheInterface, то кэширование не используется. Внимание, использование кэширования может увеличить время создания файла! |
<?php
$arrayExcelBuilder = new ArrayExcelBuilder($data, $params, $allowCallback);
$arrayExcelBuilder->save();
?>
ArrayExcelBuilder methods
| Name | Arguments | Returns | Description |
|---|---|---|---|
| build() | $this | Вносит переданные переданные данные в Spreadsheet. Метод автоматически вызывается перед сохранением, если до этого не был вызван вручную. | |
| getFlatArray() | array | Возвращает одномерный массив со значениями ячеек всех страниц. | |
| getMatrixArray() | array | Возвращает трехмерный массив (страница > колонка > строка) со значениями ячеек всех страниц. | |
| getSpreadsheet() | Spreadsheet | Возвращает Spreadsheet. Если необходимо произвести действия над Spreadsheet после build(), то build() необходимо вызвать вручную перед методом: $spreadsheet = $arrayExcelBuilder->build()->getSpreadsheet(); |
|
| load() | string $file | $this | Загружает Spreadsheet из файла. Поддерживаемые форматы: xlsx, xlsm, xltx, xltm, xls, xlt, ods, ots, slk, xml, gnumeric, htm, html, csv. |
| setAllowCallback() | bool $allowCallback | $this | Разрешить/запретить запуск callback (см. Global cell options или Cell options). |
| setData() | array $data | $this | Задает данные. Также можно внести данные через конструктор ArrayExcelBuilder (см. ArrayExcelBuilder constructor arguments). |
| setParams() | array $params | $this | Задает глобальные параметры. Также можно внести параметры через конструктор ArrayExcelBuilder (см. ArrayExcelBuilder constructor arguments). |
| save() | $pathToFile = '', array $options = [], $saveToVariable = false | bool, file, Exception, null | Генерирует файл и сохраняет его в файл/переменную. Подробнее об аргументах метода в Save arguments. |
<?php
$arrayExcelBuilder = new ArrayExcelBuilder();
$arrayExcelBuilder->setData($data)
->setParams($params)
->setAllowCallback($allowCallback)
->build();
$spreadsheet = $arrayExcelBuilder->getSpreadsheet();
$spreadsheet->getActiveSheet()->setTitle('Sheet title');
$arrayExcelBuilder->save($pathToFile, $saveOptions, $saveToVariable);
?>
Save arguments
$result = $arrayExcelBuilder->save($pathToFile, $saveOptions, $saveToVariable);
| Name | Type | Default | Description |
|---|---|---|---|
| pathToFile | string | 'Document_<Y-m-d_H-i-s>' | Путь и название файла для сохранения без расширения. |
| saveOptions | array | [] | Массив параметров сохранения файла. Смотрите Save options. |
| saveToVariable | bool | false | Не сохранять файл на диск, а вернуть его в переменную. В примере выше файл вернется в переменную $result. |
Save options
| Name | Type | Default | Description |
|---|---|---|---|
| format | string | 'xlsx' | Формат выходного файла. Поддерживаемые форматы: XLSX, XLS, ODS, CSV, HTML, PDF. |
| includeCharts | bool | true | Включить отрисовку графиков. Параметр для форматов: XLSX, XLS, ODS. |
| office2003Compatibility | bool | false | Включить совместимость с Office 2003. Параметр для форматов: XLSX. |
| calculateFormulas | bool | true | Рассчитать значения формул. Параметр для форматов: XLSX, XLS, ODS, CSV, HTML, PDF. |
| useBOM | bool | true | Внести метку BOM кодировки UTF-8. Параметр для форматов: CSV. |
| enclosure | string (one character only) | '' | Защитный символ, которым будет обрамлена каждая ячейка. Параметр для форматов: CSV. |
| lineEnding | string | "\r\n" | Символ(ы) окончания строки. Передавать необходимо в двойных кавычках. Параметр для форматов: CSV. |
| delimiter | string (one character only) | ';' | Разделитель ячеек. Параметр для форматов: CSV. |
| allSheets | bool | true | Сохранить все страницы. Игнорирует параметр "sheetIndex". Параметр для форматов: PDF. |
| sheetIndex | integer | 0 | Индекс страницы (отсчет с нуля), который необходимо сохранить. Игнорируется, если параметр "allSheets" равен "true". Параметр для форматов: CSV, PDF. |
| imagesRoot | string | '' | Корневой путь до изображений. Параметр для форматов: HTML. |
| pdfBuilder | string | 'mpdf' | Класс генератора PDF-файла. Есть три варианта: mpdf, dompdf, tcpdf. Каждый из них отличается скоростью генерирования, поддержкой различных параметров отображения и размером выходного файла. Параметр для форматов: PDF. |
<?php
$saveOptions = [
'format' => 'xlsx',
'includeCharts' => true,
'office2003Compatibility' => false,
'calculateFormulas' => true,
'useBOM' => true,
'enclosure' => '',
'lineEnding' => "\r\n",
'delimiter' => ';',
'sheetIndex' => 0,
'imagesRoot' => '',
'pdfBuilder' => 'mpdf',
'allSheets' => true,
];
?>
Charts:
Chart options
| Name | Type | Default | Description |
|---|---|---|---|
| name | string | '' | Имя графика. Не отображается. |
| title | string | none | Заголовок графика. Отображается сверху посередине. |
| xLabel | string | none | Заголовок горизонтальной оси. Отображается слева посередине вертикально. |
| yLabel | string | none | Заголовок вертикальной оси. Отображается снизу посередине. |
| chartType | string | 'lineChart' | Тип графика: barChart, bar3DChart, lineChart, line3DChart, areaChart, area3DChart, pieChart, pie3DChart, doughnutChart, scatterChart, surfaceChart, surface3DChart, radarChart, bubbleChart, stockChart. |
| groupType | string | 'stacked' | Группировка данных: clustered, stacked, percentStacked, standard. |
| chartStartPosition | string | 'B3' | Координаты страницы, где начинается график. Значение в стиле excel - первая часть строки заглавные латинские буквы, вторая часть из натуральных чисел. Например: 'A10'. |
| chartEndPosition | string | 'H18' | Координаты страницы, где заканчивается график. Значение в стиле excel - первая часть строки заглавные латинские буквы, вторая часть из натуральных чисел. Например: 'BB3'. |
| isLegend | bool | false | Отобразить легенду. |
| legendPosition | string | 'r' | Расположение легенды на графике: 'r' - справа, 'b' - снизу, 't' - сверху, 'tr' - сверху справа. |
| labels | array | none | Лейблы легенды. Подробнее в Chart labels options. |
| xValues | array | none | Данные по горизонтальной оси. Подробнее в Chart xValues and yValues options. |
| yValues | array | none | Данные по вертикальной оси. Подробнее в Chart xValues and yValues options. |
Chart labels options
| Name | Type | Default | Description |
|---|---|---|---|
| dataType | string | 'Number' | Не обязательный параметр. Тип данных: 'Number', 'String'. |
| column | string | none | Обязательный параметр. Имя колонки. Именование колонки ведется в латинских буквах начиная от A и далее. Например: 'B'. |
| row | integer | none | Обязательный параметр. Номер строки. Именование строки ведется из натуральных чисел начиная с 1. Например: 21. |
| sheetName | string | none | Обязательный параметр. Название страницы, где находится Label. |
Chart xValues and yValues options
| Name | Type | Default | Description |
|---|---|---|---|
| dataType | string | 'Number' | Не обязательный параметр. Тип данных: 'Number', 'String'. |
| sheetName | string | none | Обязательный параметр. Название страницы, где находится Label. |
| startColumn | string | none | Обязательный параметр. Имя колонки, откуда начинаются данные. Именование колонки ведется в латинских буквах начиная от A и далее. Например: 'B'. |
| startRow | integer | none | Обязательный параметр. Номер строки, откуда начинаются данные. Именование строки ведется из натуральных чисел начиная с 1. Например: 21. |
| endColumn | string | none | Обязательный параметр. Имя колонки, где заканчиваются данные. Именование колонки ведется в латинских буквах начиная от A и далее. Например: 'B'. |
| endRow | integer | none | Обязательный параметр. Номер строки, где заканчиваются данные. Именование строки ведется из натуральных чисел начиная с 1. Например: 21. |
Full example:
<?php
$charts = [
// Chart 1
[
'name' => 'Chart name',
'title' => 'Chart title',
'xLabel' => 'X axis label',
'yLabel' => 'Y axis label',
'chartType' => 'lineChart',
'groupType' => 'stacked',
'chartStartPosition' => 'B3',
'chartEndPosition' => 'H18',
'isLegend' => true,
'legendPosition' => 'tr',
'labels' => [
// Label 1
[
'dataType' => 'String',
'sheetName' => 'Worksheet',
'column' => 'B',
'row' => 1,
],
// Label n...
],
'xValues' => [
[
'dataType' => 'String',
'sheetName' => 'Worksheet',
'startColumn' => 'A',
'startRow' => 2,
'endColumn' => 'A',
'endRow' => 5,
],
],
'yValues' => [
// Value 1
[
'dataType' => 'String',
'sheetName' => 'Worksheet',
'startColumn' => 'B',
'startRow' => 2,
'endColumn' => 'B',
'endRow' => 5,
],
// Value n...
],
]
// Chart n...
];
?>
