Я хочу получить вычисленное значение функций Excel через PHP. Просто, если ввод
'=MAX(2,3,4,6)'
тогда вывод будет
6
Для этого я сделал два php-скрипта с библиотекой PHPExcel. Один скрипт примет эту формулу / функцию и сгенерирует файл xlsx.
Второй скрипт прочитает этот сгенерированный файл xlsx и выдаст вычисленное значение по заданной формуле.
Процесс кажется нормальным, но он не может генерировать значение для нескольких функций. Например, для
"=INDEX({"zz","yy","xx"},2)"
а также
"=INDEX({"zz","yy","xx"},MATCH(MAX({11,22,34}),{11,23,34}))"
Мой первый скрипт может генерировать файл xlsx вместе с результатом их формулы.
введите описание изображения здесь
но второй скрипт показывает неверный результат, он показывает только 0.
Вот мой первый скрипт http://pastebin.com/vCErW5wf
и вот мой второй сценарий
require_once 'a/Classes/PHPExcel/IOFactory.php';
require_once 'a/Classes/PHPExcel.php';
$inFile = 'index.xlsx';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inFile);
$value = $objPHPExcel->setActiveSheetIndex(0)->getCell('C5')->getOldCalculatedValue();
echo $value;
Заранее спасибо .
С помощью getOldCalculatedValue()
вернет последнее значение, вычисленное для ячейки формулы, созданной в MS Excel (и даже в этом случае можно отключить вычисления в MS Excel, и тогда это значение не будет установлено). Файл, сгенерированный PHPExcel, не будет заполнять это значение, поэтому он просто предоставит значение по умолчанию 0.
Вообще говоря, вы всегда должны использовать getCalculatedValue()
при попытке оценить значение формулы
Других решений пока нет …