PHPExcel删除循环中的行

PHPExcel删除循环中的行,php,row,phpexcel,xlsx,Php,Row,Phpexcel,Xlsx,是否有比此解决方法更有效的方法删除循环中的行 /** * Delete all rows that are identified on the 'D' * column with a $tag String value * @param String $tag */ protected function deleteRowsByTag( $tag ) { $found = true; while( $found ) { $found = fal

是否有比此解决方法更有效的方法删除循环中的行

/**
 * Delete all rows that are identified on the 'D' 
 * column with a $tag String value 
 * @param String $tag
 */
protected function deleteRowsByTag( $tag )
{
    $found = true;
    while( $found )
    {
        $found = false;
        foreach ( $this->objWorksheet->getRowIterator() as $row )
        {
            $cell = $this->objWorksheet->getCell( "D" . $row->getRowIndex() );
            $tag = str_replace( "tag_delete_", "", $tag );
            if ( strtolower( trim( $cell->getValue() ) ) === $tag )
            {
                $delete_row = $row->getRowIndex();
                // $this->objWorksheet->getRowIterator()->seek( $delete_row-2 );
                $this->objWorksheet->removeRow( $delete_row );
                $found = true;
                break;
            }
        }
    }
} // deleteRowByTag
我尝试将行迭代器设置为prev->prev位置,但这并没有奏效(我的一次尝试在代码中被注释)

谢谢


PS:@Mark Baker-很抱歉,我没有太多地阅读手册:)

在PHPExcel本身中没有聪明的方法可以做到这一点:但是,如果您只是为了显示而试图隐藏行(再次保存为Excel电子表格),我建议您从最后一行向后工作到第一行然后设置一个自动过滤器可能是一个选项。你的第一次推荐给了我一个“啊哈”的时刻。谢谢。PHPExcel本身并没有聪明的方法可以做到这一点:但是,我建议从最后一行向后工作到第一行。如果您只是为了显示目的而试图隐藏行(再次保存为Excel电子表格),那么设置自动筛选可能是一个选项。您的第一次推荐给了我一个“啊哈”的时刻。非常感谢。