示例#1
0
 /**
  * Convert the height of a cell from user's units to pixels. By interpolation
  * the relationship is: y = 4/3x. If the height hasn't been set by the user we
  * use the default value. If the row is hidden we use a value of zero.
  *
  * @param \PHPExcel\Worksheet $sheet The sheet
  * @param integer $row The row index (1-based)
  * @return integer The width in pixels
  */
 public static function sizeRow($sheet, $row = 1)
 {
     // default font of the workbook
     $font = $sheet->getParent()->getDefaultStyle()->getFont();
     $rowDimensions = $sheet->getRowDimensions();
     // first find the true row height in pixels (uncollapsed and unhidden)
     if (isset($rowDimensions[$row]) and $rowDimensions[$row]->getRowHeight() != -1) {
         // then we have a row dimension
         $rowDimension = $rowDimensions[$row];
         $rowHeight = $rowDimension->getRowHeight();
         $pixelRowHeight = (int) ceil(4 * $rowHeight / 3);
         // here we assume Arial 10
     } elseif ($sheet->getDefaultRowDimension()->getRowHeight() != -1) {
         // then we have a default row dimension with explicit height
         $defaultRowDimension = $sheet->getDefaultRowDimension();
         $rowHeight = $defaultRowDimension->getRowHeight();
         $pixelRowHeight = \PHPExcel\Shared\Drawing::pointsToPixels($rowHeight);
     } else {
         // we don't even have any default row dimension. Height depends on default font
         $pointRowHeight = \PHPExcel\Shared\Font::getDefaultRowHeightByFont($font);
         $pixelRowHeight = \PHPExcel\Shared\Font::fontSizeToPixels($pointRowHeight);
     }
     // now find the effective row height in pixels
     if (isset($rowDimensions[$row]) and !$rowDimensions[$row]->getVisible()) {
         $effectivePixelRowHeight = 0;
     } else {
         $effectivePixelRowHeight = $pixelRowHeight;
     }
     return $effectivePixelRowHeight;
 }
示例#2
0
 /**
  * Write BIFF record DEFAULTROWHEIGHT.
  */
 private function writeDefaultRowHeight()
 {
     $defaultRowHeight = $this->phpSheet->getDefaultRowDimension()->getRowHeight();
     if ($defaultRowHeight < 0) {
         return;
     }
     // convert to twips
     $defaultRowHeight = (int) 20 * $defaultRowHeight;
     $record = 0x225;
     // Record identifier
     $length = 0x4;
     // Number of bytes to follow
     $header = pack("vv", $record, $length);
     $data = pack("vv", 1, $defaultRowHeight);
     $this->append($header . $data);
 }
示例#3
0
 /**
  * Write SheetFormatPr
  *
  * @param    \PHPExcel\Shared\XMLWriter $objWriter        XML Writer
  * @param    \PHPExcel\Worksheet          $pSheet            Worksheet
  * @throws    \PHPExcel\Writer\Exception
  */
 private function writeSheetFormatPr(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet $pSheet = null)
 {
     // sheetFormatPr
     $objWriter->startElement('sheetFormatPr');
     // Default row height
     if ($pSheet->getDefaultRowDimension()->getRowHeight() >= 0) {
         $objWriter->writeAttribute('customHeight', 'true');
         $objWriter->writeAttribute('defaultRowHeight', \PHPExcel\Shared\StringHelper::formatNumber($pSheet->getDefaultRowDimension()->getRowHeight()));
     } else {
         $objWriter->writeAttribute('defaultRowHeight', '14.4');
     }
     // Set Zero Height row
     if ((string) $pSheet->getDefaultRowDimension()->getZeroHeight() == '1' || strtolower((string) $pSheet->getDefaultRowDimension()->getZeroHeight()) == 'true') {
         $objWriter->writeAttribute('zeroHeight', '1');
     }
     // Default column width
     if ($pSheet->getDefaultColumnDimension()->getWidth() >= 0) {
         $objWriter->writeAttribute('defaultColWidth', \PHPExcel\Shared\StringHelper::formatNumber($pSheet->getDefaultColumnDimension()->getWidth()));
     }
     // Outline level - row
     $outlineLevelRow = 0;
     foreach ($pSheet->getRowDimensions() as $dimension) {
         if ($dimension->getOutlineLevel() > $outlineLevelRow) {
             $outlineLevelRow = $dimension->getOutlineLevel();
         }
     }
     $objWriter->writeAttribute('outlineLevelRow', (int) $outlineLevelRow);
     // Outline level - column
     $outlineLevelCol = 0;
     foreach ($pSheet->getColumnDimensions() as $dimension) {
         if ($dimension->getOutlineLevel() > $outlineLevelCol) {
             $outlineLevelCol = $dimension->getOutlineLevel();
         }
     }
     $objWriter->writeAttribute('outlineLevelCol', (int) $outlineLevelCol);
     $objWriter->endElement();
 }