4

如何在 PHPExcel (1.7.7) 中删除一行或多行,从而减少 getHighestDataRow 值?

removeRow() 的使用似乎并未实际调整 getHighestDataRow 值。

4

2 回答 2

2

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

要么自己做,要么要求库作者修复 PHPExcel 中的这个错误。它是已知的,但在他们的优先级列表中较低,因此进一步请求修复它可能会提升该列表。

对于现有工作项,请参阅“在 removeRow() 之后保留尾随空行”。描述的问题更具体,但原因是相同的。

于 2012-09-27T07:57:30.903 回答
0

FWIW,我相信这现在已经解决了。我正在使用 PhpExcel 1.8 并且 removeRow 的代码显式更改了最高数据行值,即:

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 版本应该可以解决它。

于 2016-09-05T16:28:40.953 回答