PHPExcel 添加新行而不覆盖现有信息

PHPExcel Add new rows without override existing info

是否可以在此 sheet 中间添加新行?

...不影响或覆盖文档底部的信息?

我知道可以手动创建底部信息,但我必须每个月上传此 Excel(具有不同的 header)并设置起始行。

我试过复制最后一行,但 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' );
        }

有一个名为 insertNewRowBefore() 的工作表方法(以及一个名为 insertNewColumnBefore() 的列的相应方法)可以执行此操作。

$excel->getActiveSheet()->insertNewRowBefore(10, 5);

将在第 10 行之前向活动工作表中插入 5 个新行...实际上,它将第 10 行向下推到第 15 行,将第 11 行向下推到第 16 行,将第 12 行向下推到第 17 行,等等;相应地调整公式和其他单元格引用。

同样

$excel->getActiveSheet()->insertNewColumnBefore('B');

将在第 B.

列之前插入一个新列(insertNewRowBefore()insertNewColumnBefore() 的默认值是单行或单列)

examples folder05featuredemo.php30template.php中演示了这些方法的使用


$excel->getActiveSheet()->duplicateStyle(
    $excel->getActiveSheet()->getStyle('A30'),
    'A31:A100'
);

应该将所有样式元素(包括边框和背景)从 单个 单元格复制到单元格区域;但它不会将不同样式从一个单元格区域复制到一个新的单元格区域。