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

时间:2017-02-21 16:04:30

标签: add phpexcel rows

是否可以在此工作表的中间添加新行?

this post

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

我知道可以手动创建底部信息,但我必须每月上传这个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 个答案:

答案 0 :(得分:2)

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

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

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

同样地

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

将在列insertNewRowBefore()之前插入一个新列(insertNewColumnBefore()B的默认值为单行或单列)。

examples folder中,05featuredemo.php30template.php演示了这些方法的使用

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

应将所有样式元素(包括边框和背景)从 单元格复制到单元格区域;但它不会将不同风格从一系列细胞复制到新的细胞范围。