duannaoye0732 2019-01-04 09:03 采纳率: 100%
浏览 1257
已采纳

如何获取和设置高度和宽度phpspreadsheet

I want to set height and width in my new file from template file

$string = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col); // e.g. 5

$width = $worksheet->getCellByColumnAndRow($col, $row)->getWidth();
$height = $worksheet->getCellByColumnAndRow($col, $row)->getHeight();

$spreadsheet->getActiveSheet()->getColumnDimension($string)->setWidth($width);
$spreadsheet->getActiveSheet()->getRowDimension($row)->setHeight($height);

i have error:

"Call to undefined method PhpOffice\PhpSpreadsheet\Cell\Cell::getWidth()"

  • 写回答

1条回答 默认 最新

  • dsebywql016137 2019-01-04 09:29
    关注

    There is no such method for a cell, you must set it to the entire colmun or row. Use getColumnDimension() on a column

    $sheet->getColumnDimensionByColumn()
    $sheet->getColumnDimensions()
    $sheet->calculateColumnWidths() // Calculate widths for auto-size columns. 
    

    Plus you have a method to do that automatically:

    /**
     * Update column dimensions when inserting/deleting rows/columns.
     *
     * @param Worksheet $pSheet The worksheet that we're editing
     * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1')
     * @param int $beforeColumnIndex Index number of the column we're inserting/deleting before
     * @param int $pNumCols Number of columns to insert/delete (negative values indicate deletion)
     * @param int $beforeRow Number of the row we're inserting/deleting before
     * @param int $pNumRows Number of rows to insert/delete (negative values indicate deletion)
     */
    protected function adjustColumnDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows)
    {
        $aColumnDimensions = array_reverse($pSheet->getColumnDimensions(), true);
        if (!empty($aColumnDimensions)) {
            foreach ($aColumnDimensions as $objColumnDimension) {
                $newReference = $this->updateCellReference($objColumnDimension->getColumnIndex() . '1', $pBefore, $pNumCols, $pNumRows);
                list($newReference) = Coordinate::coordinateFromString($newReference);
                if ($objColumnDimension->getColumnIndex() != $newReference) {
                    $objColumnDimension->setColumnIndex($newReference);
                }
            }
            $pSheet->refreshColumnDimensions();
        }
    }
    

    In PhpOffice\PhpSpreadsheet\ReferenceHelper

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?