如何删除PHPExcel(1.7.7)中的行或多行,以便减少getHighestDataRow值?
removeRow()的使用似乎没有实际调整getHighestDataRow值。
答案 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版本的更新应该可以解决它。