public function PHPExcel_Worksheet::calculateColumnWidths in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet.php \PHPExcel_Worksheet::calculateColumnWidths()
Calculate widths for auto-size columns
Parameters
boolean $calculateMergeCells Calculate merge cell width:
Return value
File
- vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Worksheet.php, line 724
Class
- PHPExcel_Worksheet
- PHPExcel_Worksheet
Code
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;
}