Как в PHPExcel скопировать ячейки? Доброго времени суток! Требуется помощь. Есть табличка подобной структуры. (розовым указал строки в этой табличке). Мне нужно подытожить весь вывод. Ячейка В45 считается по формуле СУММ(В35;В25;В15;В5), С45 по формуле СУММ(С35;С25;С15;В5), В46 - СУММ(В36;В26;В16;В6). Когда в Excel мы в ячейку вбили формулу, то можем растянуть ее на всю строку - при этом значение столбца подставится автоматически; получившуюся строку растянули на несколько других - также все отрабатывает без ошибок и подстановки Строка/Столбец отрабатывают на ура. Не хочется в циклах прокидывать формулу вычисления значение итоговых ячеек. Не пойму, как вбив в ячейку В45 формулу, потом скопировать ее значение на диапазон ячеек B45:I45. Как скопировать ячейку (диапазон ячеек), чтобы при вставке срабатывали формулы по новым координатам?
В PHPExcel вы можете скопировать содержимое ячейки с формулой на другие ячейки с помощью метода setSharedFormula(). Ниже приведен пример кода, который показывает, как это можно сделать:
Этот код создаст ячейку B45 с формулой SUM(B35,B25,B15,B5) и скопирует ее на диапазон ячеек B45:I45. При вставке значений в эти ячейки, формула будет автоматически рассчитывать значения по новым координатам.
В PHPExcel вы можете скопировать содержимое ячейки с формулой на другие ячейки с помощью метода setSharedFormula(). Ниже приведен пример кода, который показывает, как это можно сделать:
$objPHPExcel = new PHPExcel();// Добавляем данные в ячейки
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('B45', '=SUM(B35,B25,B15,B5)');
// Копируем формулу на диапазон ячеек B45:I45
$objPHPExcel->getActiveSheet()->duplicateStyle($objPHPExcel->getActiveSheet()->getStyle('B45'), 'B45:I45');
$objPHPExcel->getActiveSheet()->setSharedFormula('B45', array(
'B45', 'C45', 'D45', 'E45', 'F45', 'G45', 'H45', 'I45'
), PHPExcel_Cell_DataType::TYPE_FORMULA);
// Генерируем Excel файл
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('output.xlsx');
Этот код создаст ячейку B45 с формулой SUM(B35,B25,B15,B5) и скопирует ее на диапазон ячеек B45:I45. При вставке значений в эти ячейки, формула будет автоматически рассчитывать значения по новым координатам.