/** * Calculate widths for auto-size columns * * @param boolean $calculateMergeCells Calculate merge cell width * @return PHPExcel_Worksheet; */ public function calculateColumnWidths($calculateMergeCells = false) { $autoSizes = array(); foreach ($this->getColumnDimensions() as $colDimension) { if ($colDimension->getAutoSize()) { $autoSizes[$colDimension->getColumnIndex()] = -1; } } foreach ($this->getCellCollection() as $cell) { if (isset($autoSizes[$cell->getColumn()])) { $cellValue = $cell->getCalculatedValue(); foreach ($this->getMergeCells() as $cells) { if ($cell->isInRange($cells) && !$calculateMergeCells) { $cellValue = ''; // do not calculate merge cells } } $autoSizes[$cell->getColumn()] = max((double) $autoSizes[$cell->getColumn()], (double) PHPExcel_Shared_Font::calculateColumnWidth($this->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont()->getSize(), false, $cellValue, $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getAlignment()->getTextRotation())); } } foreach ($autoSizes as $columnIndex => $width) { if ($width == -1) { $width = $this->getDefaultColumnDimension()->getWidth(); } $this->getColumnDimension($columnIndex)->setWidth($width); } return $this; }
/** * Calculate widths for auto-size columns * * @param boolean $calculateMergeCells Calculate merge cell width * @return PHPExcel_Worksheet; */ public function calculateColumnWidths($calculateMergeCells = false) { // initialize $autoSizes array $autoSizes = array(); foreach ($this->getColumnDimensions() as $colDimension) { if ($colDimension->getAutoSize()) { $autoSizes[$colDimension->getColumnIndex()] = -1; } } // There is only something to do if there are some auto-size columns if (!empty($autoSizes)) { // build list of cells references that participate in a merge $isMergeCell = array(); foreach ($this->getMergeCells() as $cells) { foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) { $isMergeCell[$cellReference] = true; } } // loop through all cells in the worksheet foreach ($this->getCellCollection(false) as $cellID) { $cell = $this->getCell($cellID); if (isset($autoSizes[$this->_cellCollection->getCurrentColumn()])) { // Determine width if cell does not participate in a merge if (!isset($isMergeCell[$this->_cellCollection->getCurrentAddress()])) { // Calculated value // To formatted string $cellValue = PHPExcel_Style_NumberFormat::toFormattedString($cell->getCalculatedValue(), $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode()); $autoSizes[$this->_cellCollection->getCurrentColumn()] = max((double) $autoSizes[$this->_cellCollection->getCurrentColumn()], (double) PHPExcel_Shared_Font::calculateColumnWidth($this->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont(), $cellValue, $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getAlignment()->getTextRotation(), $this->getDefaultStyle()->getFont())); } } } // adjust column widths foreach ($autoSizes as $columnIndex => $width) { if ($width == -1) { $width = $this->getDefaultColumnDimension()->getWidth(); } $this->getColumnDimension($columnIndex)->setWidth($width); } } return $this; }
/** * Calculate widths for auto-size columns * * @param boolean $calculateMergeCells Calculate merge cell width */ public function calculateColumnWidths($calculateMergeCells = false) { $autoSizes = array(); foreach ($this->getColumnDimensions() as $colDimension) { if ($colDimension->getAutoSize()) { $autoSizes[$colDimension->getColumnIndex()] = -1; } } foreach ($this->getCellCollection() as $cell) { if (isset($autoSizes[$cell->getColumn()])) { $cellValue = $cell->getCalculatedValue(); foreach ($this->getMergeCells() as $cells) { if ($cell->isInRange($cells) && !$calculateMergeCells) { $cellValue = ''; // do not calculate merge cells } } $autoSizes[$cell->getColumn()] = max((double) $autoSizes[$cell->getColumn()], (double) PHPExcel_Shared_Font::calculateColumnWidth($this->getStyle($cell->getCoordinate())->getFont()->getSize(), false, $cellValue)); } } foreach ($autoSizes as $columnIndex => $width) { $this->getColumnDimension($columnIndex)->setWidth($width); } }
/** * Calculate widths for auto-size columns * * @param boolean $calculateMergeCells Calculate merge cell width * @return PHPExcel_Worksheet; */ public function calculateColumnWidths($calculateMergeCells = false) { // initialize $autoSizes array $autoSizes = array(); foreach ($this->getColumnDimensions() as $colDimension) { if ($colDimension->getAutoSize()) { $autoSizes[$colDimension->getColumnIndex()] = -1; } } // There is only something to do if there are some auto-size columns if (!empty($autoSizes)) { foreach ($this->getCellCollection(false) as $cell) { if (isset($autoSizes[$cell->getColumn()])) { // Is merge cell? $isMergeCell = false; foreach ($this->getMergeCells() as $cells) { if ($cell->isInRange($cells) && !$calculateMergeCells) { $isMergeCell = true; // do not calculate merge cells break; } } // Determine width if (!$isMergeCell) { // Calculated value $cellValue = $cell->getCalculatedValue(); // To formatted string $cellValue = PHPExcel_Style_NumberFormat::toFormattedString($cellValue, $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode()); $autoSizes[$cell->getColumn()] = max((double) $autoSizes[$cell->getColumn()], (double) PHPExcel_Shared_Font::calculateColumnWidth($this->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont(), $cellValue, $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getAlignment()->getTextRotation(), $this->getDefaultStyle()->getFont())); } } } // adjust column widths foreach ($autoSizes as $columnIndex => $width) { if ($width == -1) { $width = $this->getDefaultColumnDimension()->getWidth(); } $this->getColumnDimension($columnIndex)->setWidth($width); } } return $this; }
/** * Calculate widths for auto-size columns */ public function calculateColumnWidths() { $autoSizes = array(); foreach ($this->getColumnDimensions() as $colDimension) { if ($colDimension->getAutoSize()) { $autoSizes[$colDimension->getColumnIndex()] = -1; } } foreach ($this->getCellCollection() as $cell) { if (isset($autoSizes[$cell->getColumn()])) { $autoSizes[$cell->getColumn()] = max($autoSizes[$cell->getColumn()], PHPExcel_Shared_Font::calculateColumnWidth($this->getStyle($cell->getCoordinate())->getFont()->getSize(), false, $cell->getCalculatedValue())); } } foreach ($autoSizes as $columnIndex => $width) { $this->getColumnDimension($columnIndex)->setWidth($width); } }