4

getHighestDataRow 値がデクリメントされるように、PHPExcel (1.7.7) で行または行数を削除するにはどうすればよいですか?

removeRow() を使用しても、実際には getHighestDataRow 値が調整されないようです。

4

2 に答える 2

2

そうではありません。同じことが列にも当てはまることに気付くでしょう。

自分で行うか、ライブラリの作成者に PHPExcel のこのバグを修正するよう依頼してください。既知ですが、優先度リストの下位にあるため、修正をさらにリクエストすると、そのリストが上がる可能性があります.

既存の作業項目については、「removeRow() の後に末尾の空の行が残る」を参照してください。説明されている問題はより具体的ですが、原因は同じです。

于 2012-09-27T07:57:30.903 に答える
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 を更新することで解決するはずです。

于 2016-09-05T16:28:40.953 に答える