У меня есть следующий Excel файл:
Я прочитал его, зациклив над каждой ячейкой и получив значение с помощью getCell(...)->getValue()
:
$highestColumnAsLetters = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestColumn(); //e.g. 'AK'
$highestRowNumber = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$highestColumnAsLetters++;
for ($row = 1; $row < $highestRowNumber + 1; $row++) {
$dataset = array();
for ($columnAsLetters = 'A'; $columnAsLetters != $highestColumnAsLetters; $columnAsLetters++) {
$dataset[] = $this->objPHPExcel->setActiveSheetIndex(0)->getCell($columnAsLetters.$row)->getValue();
if ($row == 1)
{
$this->column_names[] = $columnAsLetters;
}
}
$this->datasets[] = $dataset;
}
Однако, несмотря на то, что он хорошо читает данные, в вычислениях он читает буквально :
Я понимаю из обсуждений как этот , что я могу использовать getCalculatedValue()
для вычисленных ячеек.
Проблема в том, что в таблицах Excel, которые я импортирую, я заранее не знаю, какие ячейки рассчитываются, а какие нет.
Есть ли способ для меня прочитать значение ячейки таким образом, чтобы автоматически получать значение, если оно имеет простое значение, и получать результат вычисления, если это вычисление?
Ответ:
Оказывается, что getCalculatedValue()
работает для всех ячеек, меня удивляет, почему это не значение по умолчанию для getValue()
, так как я думаю, что в любом случае обычно требуется значение вычислений вместо самих уравнений В случае, если это работает:
...->getCell($columnAsLetters.$row)->getCalculatedValue();