如何刪除一行或PHPExcel(1.7.7)中的行數,使得getHighestDataRow值遞減?
removeRow()的用法似乎沒有實際調整getHighestDataRow值。
如何刪除一行或PHPExcel(1.7.7)中的行數,使得getHighestDataRow值遞減?
removeRow()的用法似乎沒有實際調整getHighestDataRow值。
正確,它沒有。您會注意到,這也適用於列。
要麼自己做,要麼讓圖書館作者在PHPExcel中修復這個bug。這是衆所周知的,但是放在他們的優先級列表中,所以進一步修復它的請求可能會將其列入清單。
對於現有的工作項目,請參閱「Trailing empty rows remain after removeRow()」。所描述的問題更具體,但原因是一樣的。
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的版本應該解決這個問題。