Глядя на параметры и пример на PhpExcel - Как вставить ту же строку после строки N? Я бы предположил, что ваши параметры неверны, я думаю, что insertNewRowBefore()
имеет параметры вставки точки и количества строк, так что это должно быть 16 и 1 в вашем случае. Кроме того, вызов duplicateStyle()
должен выполняться со строками, которые вы хотите обновить, а не с диапазоном ячеек - я поставил «A15», но, возможно, его нужно настроить.
$phpExcelObject->getActiveSheet()->insertNewRowBefore(16,1);
$phpExcelObject->getActiveSheet()->duplicateStyle($phpExcelObject->getActiveSheet()->getStyle('A16'), 'A15');
Обновление:
Если вы также хотите скопировать данные, я переписал их, чтобы сократить количество повторяющихся битов, но начнем со строки, которую вы хотите скопировать. Затем он вставляет строку перед этим, а затем создает диапазон, который охватывает всю строку, используя getHighestColumn()
, чтобы получить конец строки. Затем он копирует этот диапазон для вас.
$copyFrom= "4";
$activeSheet = $objPHPExcel->getActiveSheet();
$activeSheet->insertNewRowBefore($copyFrom,1);
$activeSheet->duplicateStyle($activeSheet->getStyle('A'.($copyFrom+1)), 'A'.$copyFrom);
$lastColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
$rangeFrom = 'A'.($copyFrom+1).':'.$lastColumn.($copyFrom+1);
$activeSheet->fromArray($activeSheet->rangeToArray($rangeFrom), null, 'A'.$copyFrom);