Содержание
Сниппеты 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');
Показ числа без научной нотации
Если ИНН 320801082253
показывается как 3,20801E+11
, поможет это:
$sheet->setCellValue("A3", $inn, true)->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);