如何在 PHPExcel (1.7.7) 中删除一行或多行,从而减少 getHighestDataRow 值?
removeRow() 的使用似乎并未实际调整 getHighestDataRow 值。
如何在 PHPExcel (1.7.7) 中删除一行或多行,从而减少 getHighestDataRow 值?
removeRow() 的使用似乎并未实际调整 getHighestDataRow 值。
正确,它没有。您会注意到这同样适用于列。
要么自己做,要么要求库作者修复 PHPExcel 中的这个错误。它是已知的,但在他们的优先级列表中较低,因此进一步请求修复它可能会提升该列表。
对于现有工作项,请参阅“在 removeRow() 之后保留尾随空行”。描述的问题更具体,但原因是相同的。
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 版本应该可以解决它。