PHPExcel:如何在第一页标题中插入图像并将其放大以适应其内容?



我有一个用PHPExcel制作的Excel文件,它有一个左对齐的徽标和右对齐的日期的标题&用户文本。对于第一页,我想要一个类似的标题(相同的徽标和相同的日期和用户文本),但添加了一些信息(文件的标题和参数在后面几行居中)。

这就是我目前正在做的事情:

<?php
    $sheet = $this->_spreadsheet->getActiveSheet(); //_spreadsheet is an instance of PHPExcel
    $logo = new PHPExcel_Worksheet_HeaderFooterDrawing();
    $logo->setName('Logo');
    $logo->setPath(DOCUMENT_ROOT . '/public/logo.jpg'); //Path is OK & tested under PHP
    $logo->setHeight(38); //If image is larger/smaller than that, image will be proportionally resized
    $sheet->getHeaderFooter()->addImage($logo, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT);
    $sheet->getHeaderFooter()->setOddHeader('&L&G&RExport date: ' . date('Y-m-d H:i:s') . "n" . 'User: ' . $user->name);
    if ($grid->getTitle() != '') {
        $sheet->getHeaderFooter()->setDifferentFirst(true);
        $sheet->getHeaderFooter()->addImage($logo, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT);
        $sheet->getHeaderFooter()->setFirstHeader('&L&G&C&"-,Bold"' . "nnn" . $grid->getTitle() . "n" . $grid->getParameters() . '&RExport date: ' . date('Y-m-d H:i:s') . "n" . 'User: ' . $user->name);
    }
?>

对于"常规"页眉,徽标和文本都在那里,所以一切都可以。对于第一页页眉,我有两个问题:

  1. 徽标没有显示在第一个页眉上(但文本可以)
  2. 由于居中的标题后面会跟着一些文本(使用getParameters动态加载),我希望第一个页头可以拉伸以适应它的内容

我如何使用PHPExcel做到这一点?

我不知道为什么徽标没有显示在第一个页眉上,但要扩展高度以适应内容,需要手动更改页边空白。

我不确定最好的方法,无论是计算换行符还是其他什么。但一旦你知道你有多少行,你就可以做一些类似的事情:

$headerHeight = ( $imageHeight / 72 ) + ( $headerLineCount * $lineHeight );
$objPHPExcel->getActiveSheet()->getPageMargins()->setHeader( $margin );
$objPHPExcel->getActiveSheet()->getPageMargins()->setTop( $margin + $headerHeight );

**"$imageHeight/72"子句只是猜测如何将图像的屏幕高度转换为英寸

最新更新