Чи можна додати нові рядки в середині цього аркуша?
... без впливу або перезапису інформації внизу документа?
Я знаю, що можливо створити нижню інформацію вручну, але я повинен завантажувати цей Excel кожного місяця (з іншим заголовком) і встановлювати початковий рядок.
Я спробував скопіювати останні рядки, але duplicateStyle не копіює межі та фони
# library
$this->load->library("excel");
$path = "./assets/files/uploads/form.xls";
$excel = PHPExcel_IOFactory::load( $path );
$excel->setActiveSheetIndex(1);
$row = 10;
$total = 25;
if( $total >= 20 )
{
$cellValues = $excel->getActiveSheet()->rangeToArray( "A30:L32" );
$excel->getActiveSheet()->fromArray( $cellValues, null, "A33" );
$excel->getActiveSheet()->duplicateStyle( $excel->getActiveSheet()->getStyle( "A30:L30"), "A32:L32" );
}
Відповіді:
1 для відповіді № 1Існує метод Workheet, який називається insertNewRowBefore()
(і відповідний метод для стовпців з назвою insertNewColumnBefore()
), які роблять це.
$excel->getActiveSheet()->insertNewRowBefore(10, 5);
вставить 5 нових рядків в активний аркуш,перед рядком 10 ... ефективно, він висуває рядок 10 вниз до рядка 15, рядок 11 вниз до рядка 16, рядок 12 вниз до рядка 17 тощо; відповідно налаштовуючи формули та інші посилання на комірки.
Так само
$excel->getActiveSheet()->insertNewColumnBefore("B");
вставить єдиний новий стовпець (за замовчуванням для обох insertNewRowBefore()
і insertNewColumnBefore()
це один рядок або один стовпець) перед стовпцем B
.
В приклад папка, 05featuredemo.php
і 30template.php
продемонструвати використання цих методів
І
$excel->getActiveSheet()->duplicateStyle(
$excel->getActiveSheet()->getStyle("A30"),
"A31:A100"
);
слід скопіювати всі елементи стилю (включаючи межі та фон) з файлу сингл клітина до діапазону клітин; але він не зможе скопіювати різні стилі з діапазону комірок в новий діапазон комірок.