Метаданные листа
На этой странице
Получение правил проверки данных
Каждый лист в вашем XLSX-файле может содержать набор правил проверки данных (data validation). Чтобы получить их, достаточно вызвать getDataValidations у листа
$excel = Excel::open($file);
$sheet = $excel->sheet();
$validations = $sheet->getDataValidations();
/*
[
[
'type' => 'list',
'sqref' => 'E2:E527',
'formula1' => '"Berlin,Cape Town,Mexico City,Moscow,Sydney,Tokyo"',
'formula2' => null,
], [
'type' => 'decimal',
'sqref' => 'G2:G527',
'formula1' => '0.0',
'formula2' => '999999.0',
],
]
*/
Ширины колонок
Получить ширину конкретной колонки на листе:
$excel = Excel::open($file);
$sheet = $excel->selectSheet('SheetName');
// Получить ширину колонки 1 (колонка 'A')
$columnWidth = $sheet->getColumnWidth(1);
echo $columnWidth; // Например: 11.85
Высоты строк
Получить высоту конкретной строки на листе:
$excel = Excel::open($file);
$sheet = $excel->selectSheet('SheetName');
// Получить высоту строки 1
$rowHeight = $sheet->getRowHeight(1);
echo $rowHeight; // Например: 15
Информация о закреплённых областях
Получить информацию о закреплённых областях (freeze pane) листа:
$excel = Excel::open($file);
$sheet = $excel->selectSheet('SheetName');
// Получить конфигурацию закреплённых областей
$freezePaneConfig = $sheet->getFreezePaneInfo();
print_r($freezePaneConfig);
/*
Пример вывода:
Array
(
[xSplit] => 0
[ySplit] => 1
[topLeftCell] => 'A2'
)
*/
Информация о цвете вкладки
Получить информацию о цвете вкладки листа:
$excel = Excel::open($file);
$sheet = $excel->selectSheet('SheetName');
// Получить конфигурацию цвета вкладки
$tabColorConfig = $sheet->getTabColorInfo();
print_r($tabColorConfig);
/*
Пример вывода:
Array
(
[theme] => '2'
[tint] => '-0.499984740745262'
)
*/
Информация об объединённых ячейках
Можно использовать следующие методы:
Sheet::getMergedCells()-- Возвращает все объединённые диапазоныSheet::isMerged(string $cellAddress)-- Проверяет, объединена ли ячейкаSheet::mergedRange(string $cellAddress)-- Возвращает диапазон объединения указанной ячейки
Например
if ($sheet->isMerged('B3')) {
$range = $sheet->mergedRange('B3');
}
Гиперссылки
Лист может содержать гиперссылки на ячейках. Вызовите Sheet::getHyperlinks(), чтобы получить их —
с ключами по ячейке (или диапазону), к которой они привязаны:
$links = $sheet->getHyperlinks();
Вы получите массив вида:
Array
(
[A7] => Array
(
[link] => 'https://go.servicetitan.com/'
[location] => '/new/reports/218?DateType=0&...'
[display] => ''
[tooltip] => ''
)
)
link— разрешённая внешняя цель (URL, взятый из связей листа), либо пустая строка для чисто внутренней ссылки;location— местоположение внутри документа: ссылка на ячейку видаSheet2!A1для внутренней ссылки либо фрагмент, добавляемый к внешней цели;display,tooltip— соответствующие атрибуты, либо пустая строка, если их нет.
Лист без гиперссылок возвращает пустой массив.
Подсчёт строк и колонок
Каждый лист содержит свойство dimension с диапазоном области, в которой записаны данные.
Если на листе заполнена только одна ячейка, там должен быть адрес только этой ячейки вида "B2",
иначе это диапазон вида "B2:E10".
Есть несколько методов, получающих данные из этого свойства:
dimension()-- Возвращает размерность рабочей области по умолчанию из свойств листаcountRows()-- Количество строк из dimensioncountColumns()-- Количество колонок из dimensionminRow()-- Минимальный номер строки из свойств листаmaxRows()-- Максимальный номер строки из свойств листаminColumn()-- Буква минимальной колонки из свойств листаmaxColumn()-- Буква максимальной колонки из свойств листа
Но иногда свойство dimension содержит некорректную информацию.
Например, там может быть адрес только первой ячейки диапазона данных или только последней.
В таких случаях можно использовать методы, которые сканируют весь лист и подсчитывают фактическое
количество строк и колонок с данными на листе.
ВАЖНО: эти методы работают медленнее методов, использующих свойство dimension
actualDimension()-- Возвращает размерность фактической рабочей областиcountActualRows()-- Подсчёт фактических строк на листеminActualRow()-- Минимальный фактический номер строкиmaxActualRow()-- Максимальный фактический номер строкиcountActualColumns()-- Подсчёт фактических колонок на листеminActualColumn()-- Буква минимальной фактической колонкиmaxActualColumn()-- Буква максимальной фактической колонки