use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// Открыть файл
$reader = IOFactory::createReader("Xlsx");
$spreadsheet = $reader->load('file.xlsx');
$sheet = $spreadsheet->getActiveSheet();
// Обход всех строк и ячеек
$highestRow = $sheet->getHighestRow();
$highestCol = $sheet->getHighestColumn();
$highestColIndex = Coordinate::columnIndexFromString($highestCol);
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 1; $col <= $highestColIndex; $col++) {
$cellValue = $sheet->getCellByColumnAndRow($col, $row)->getValue();
echo "Значение ячейки {$col}{$row}: {$cellValue}\n";
}
}
// Создать лист и задать отступы
$oSpreadsheet = new Spreadsheet();
$sheet = $oSpreadsheet->getActiveSheet();
$sheet->getPageMargins()
->setLeft(0.2)
->setRight(0.2)
->setTop(0.2)
->setBottom(0.2);
// Задать ширину столбца
$sheet->getColumnDimension('A')->setWidth('18');
// Задать высоту строки
$sheet->getRowDimension(5)->setRowHeight($item['height']);
// Объединить ячейки
$sheet->mergeCells('A1:B3');
// Вставить текст в ячейку
$sheet
->setCellValue('A10', 'Данные пользователя');
// Рамка, обводка для разных диапазонов
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
];
$sheet->getStyle('A3:B4')->applyFromArray($styleArray);
$sheet->getStyle('D3:E4')->applyFromArray($styleArray);
// Рамка обводка для одного диапазона
$sheet->getStyle('A2:E8')
->getBorders()
->getOutline()
->setBorderStyle(Border::BORDER_THICK)
->setColor(new Color('000000'));
// Отступ ячеек
$sheet->getStyle('A3:A6')->getAlignment()->setIndent(1);
// Сделать жирными
$sheet->getStyle('A22:A27')->getFont()->setBold(true);
// Перенос текста для ячейки
$sheet->getCell('A12')->getStyle()->getAlignment()->setWrapText(true);
// Выравнивание по центру
$sheet->getCell('A13')->getStyle()
->getAlignment()
->setHorizontal('center');
// Задание шрифта
$sheet->getCell('A15')->getStyle()
->getFont()
->setName('Arial')
->setSize(16);
// Вставка html кода в ячейку
$wizard = new \PhpOffice\PhpSpreadsheet\Helper\Html();
$richText = $wizard->toRichTextObject('<b>Привет</b><br><i>Пока</i>');
$sheet->setCellValue('A13',$richText);
// Автоматическая ширина для колонок
foreach(range('A','M') as $columnID) {
$sheet
->getColumnDimension($columnID)
->setAutoSize(true);
}
// Отдать файл на скачивание в браузер
$oWriter = IOFactory::createWriter($oSpreadsheet, 'Xlsx');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename=\"filename.xlsx\"");
header("Cache-Control: max-age=0");
$oWriter->save('php://output');
// Cохранить на диск
$excel = new Xlsx($spreadsheet);
$excel->save('file.xlsx');
// Или
$oWriter = IOFactory::createWriter($oSpreadsheet, 'Xlsx');
$oWriter->save('file.xlsx');