Сниппеты PHPExcel

Загрузка документа Excel

$this->excel = PHPExcel_IOFactory::createReader('Excel2007');
$this->excel = $this->excel->load($this->templateFileName);
$this->excel->setActiveSheetIndex(0);
$sheet = $this->excel->getActiveSheet();

$sheet - текущий лист, все операции проводятся с ним

Вставить формулу

Для примера вставим формулу расчета значение по проценту A3 = A1*A2 / 100:

$sheet->setCellValue('A3', sprintf('=%s*%s/100', 'A1', 'A2'));

:!: Больше примеров содержит сам пакет PHPExcel, для формул это Examples/03formulas.php

В MS Excel у меня формула пересчиталась, но в LibreOffice - нет. Чтобы исправить это, надо перед сохранением файла вызвать $objWriter->setPreCalculateFormulas(true);, однако пересчет займет время, и могут быть проблемы с некоторыми не поддерживаемыми в движке PHPExcel формулами и фичами.

Посчитать значение формулы

$val = $sheet->getCell('A3')->getCalculatedValue(); // пересчитанное значение
$val = $sheet->getCell('A3')->getOldCalculatedValue(); // "старое", посчитанное ранее значение

Формат ячейки

Пример для формата с точностью до сотых:

$sheet->getStyle('A3')->getNumberFormat()->setFormatCode('#,##0.00');