2013-07-02 6 views
2

Я использую библиотеку PHPExcel: https://github.com/PHPOffice/PHPExcelPHPExcel с операторами

Я whant установить формулу для ячейки С1:

$objPHPExcel->setActiveSheetIndex(0) 
      ->setCellValue('A1', 5) 
      ->setCellValue('B1', 6) 
      ->setCellValue('C1', "=SUM(A1,B1)"); 

Это работает отлично.

После того, как я изменить формулу на тот, который имеет + или - операторы, например:

->setCellValue('C1', "=A1-B1"); 

вместо

->setCellValue('C1', "=SUM(A1,B1)"); 

Я получаю следующее сообщение об ошибке:

Illegal string offset 'value' в \ phpexcel \ PHPExcel \ Calculation.php в строке 2976

, а затем

Массив для преобразования строки в \ PHPExcel \ PHPExcel \ Calculation.php на линии 3010

Глядя на код Calculation.php - Я считаю, что это сокращает ссылки A1 и B1 - A и B.

Любая идея, как исправить это? Спасибо!

  • Remark1: Похоже, это не имеет значения, но я предпочитаю, чтобы сказать, что я быть_наст испанские версии Excel, установленные на компьютере.

  • Замечание2: В примерах, которые я нашел на PHPExcel GitHub, все формулы не имеют операторов, используются только функции.

+0

Невозможно повторить: Я только что протестировал против версии 1.7.0 до 1.7.9, используя ваш пример. Является ли ваша формула действительно такой простой? Можете ли вы определить, где вычислительный механизм сокращает эти значения от A1 и B1 до A и B? –

+0

05FeatureDemo содержит ряд формул с использованием операторов, включая '= E11 + E12', а также' = E11 * 0.21' и более сложные формулы с операторами, такими как '= IF (D6 <>" ", C6 * D6," ") ' –

+0

Какую версию PHPExcel вы используете? строка 2976 Calculation.php в версии 1.79 должен быть доступен только в том случае, если вы указали диапазон ячеек (например, 'A1: B1'), но не имеете никакого доступа к' value' каким-либо образом (хотя строка 2974 делает) –

ответ

0

Я столкнулся с той же ошибкой, которая пытается использовать любые математические операторы, такие как сложение, умножение, деление или вычитание с использованием PHPExcel версии 1.7.6. Я обновляю до последней версии, исправил проблему для меня.

0

Я знаю, что это больше, чем два года назад, но у меня такая же ошибка (но только первый, с»... линия 2976") и найти что-то для вас

Any idea how to fix it?

@Alexander @Mark Baker для тех, кто не может обновить, или для Mark Baker, кажется, работает с «(» и «)»

Так как это:

->setCellValue('C1', "=(A1-B1)"); 
Смежные вопросы