2012-09-27 21 views
4

如何刪除一行或PHPExcel(1.7.7)中的行數,使得getHighestDataRow值遞減?

removeRow()的用法似乎沒有實際調整getHighestDataRow值。

回答

2

正確,它沒有。您會注意到,這也適用於列。

要麼自己做,要麼讓圖書館作者在PHPExcel中修復這個bug。這是衆所周知的,但是放在他們的優先級列表中,所以進一步修復它的請求可能會將其列入清單。

對於現有的工作項目,請參閱「Trailing empty rows remain after removeRow()」。所描述的問題更具體,但原因是一樣的。

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的版本應該解決這個問題。