PHPExcel:如何删除一行,以便调整$ worksheet-> getHighestDataRow?

时间:2012-09-27 07:03:04

标签: phpexcel

如何删除PHPExcel(1.7.7)中的行或多行,以便减少getHighestDataRow值?

removeRow()的使用似乎没有实际调整getHighestDataRow值。

2 个答案:

答案 0 :(得分:2)

正确,但没有。您会注意到同样适用于列。

要么自己动手,要么让图书馆作者在PHPExcel中修复此错误。众所周知,但是他们的优先级列表很低,所以进一步修复它的请求可能会提升它的列表。

有关现有工作项,请参阅“Trailing empty rows remain after removeRow()”。所描述的问题更具体,但原因是相同的。

答案 1 :(得分:0)

FWIW,我相信现在已经修复了。我使用的是PhpExcel 1.8,removeRow的代码显式更改了highestDataRow值,即:

public function removeRow($pRow = 1, $pNumRows = 1)
{
    if ($pRow >= 1) {
        $highestRow = $this->getHighestDataRow();
        $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance();
        $objReferenceHelper->insertNewBefore('A' . ($pRow + $pNumRows), 0, -$pNumRows, $this);
        for ($r = 0; $r < $pNumRows; ++$r) {
            $this->getCellCacheController()->removeRow($highestRow);
            --$highestRow;
        }
    } else {
        throw new PHPExcel_Exception("Rows to be deleted should at least start from row 1.");
    }
    return $this;
}

因此,如果这对任何人来说仍然是一个问题,那么对您的PhpExcel版本的更新应该可以解决它。