getHighestDataRow 値がデクリメントされるように、PHPExcel (1.7.7) で行または行数を削除するにはどうすればよいですか?
removeRow() を使用しても、実際には getHighestDataRow 値が調整されないようです。
getHighestDataRow 値がデクリメントされるように、PHPExcel (1.7.7) で行または行数を削除するにはどうすればよいですか?
removeRow() を使用しても、実際には getHighestDataRow 値が調整されないようです。
そうではありません。同じことが列にも当てはまることに気付くでしょう。
自分で行うか、ライブラリの作成者に PHPExcel のこのバグを修正するよう依頼してください。既知ですが、優先度リストの下位にあるため、修正をさらにリクエストすると、そのリストが上がる可能性があります.
既存の作業項目については、「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 を更新することで解決するはずです。