PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Tuesday, October 4, 2022

[FIXED] How to get and set height and width phpspreadsheet

 October 04, 2022     php, phpexcel, phpspreadsheet     No comments   

Issue

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()"


Solution

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



Answered By - Florent Cardot
Answer Checked By - Terry (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home
View mobile version

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing