PHPExcel - 如何简化设置2个字体大小的单个单元格

时间:2017-03-03 17:45:17

标签: phpexcel richtext

我有一个我用PHPExcel创建的电子表格...我试图创建一个单元格,其中包含14pt文本,后跟10pt字体(都在同一个单元格内)。

我已经能够创建一个有效的测试程序......但我觉得它应该是更加冗长。

有人可以告诉我如何简化这两段文字的字体设置。

以下是我为测试而创建的代码......

<?php
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';

$objPHPExcel = new PHPExcel();

$phpColor = new PHPExcel_Style_Color();
$phpColor->setRGB("0070C0");

$objRichText = new PHPExcel_RichText();
$run1 = $objRichText->createTextRun('Main Part of the Title, ');
$run1->getFont()->setBold(true);
$run1->getFont()->setName("Calibri");
$run1->getFont()->setSize("14");
$run1->getFont()->setColor($phpColor);

$run2 = $objRichText->createTextRun(' and some extra');
$run2->getFont()->setBold(true);
$run2->getFont()->setName("Calibri");
$run2->getFont()->setSize("10");
$run2->getFont()->setColor($phpColor);

$objPHPExcel->getActiveSheet()->setCellValue("A1", $objRichText);
header ( 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' );
header ( 'Content-Disposition: attachment;filename="sq_test.xlsx"' );
header ( 'Cache-Control: max-age=0' );
$objWriter = PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel2007' );
$objWriter->save ( 'php://output' );
?>

具体来说,我尝试使用以下代替所有$ run2-&gt; getFont()行......

$run2->getFont()->applyFromArray(array("font" => array( "bold" => true, "size" => 10, "name" => "Calibri", "color" => $phpColor)));

它并没有产生错误......但是没有根据它的默认设置调整字体......但这是我真正喜欢的那种简化,如果它和&# #39;可能。

2 个答案:

答案 0 :(得分:3)

您可以使用流畅的界面轻微简化:

$objRichText = new PHPExcel_RichText();
$run1 = $objRichText->createTextRun('Main Part of the Title, ');
$run1->getFont()->setBold(true);
$run1->getFont()->setName("Calibri");
$run1->getFont()->setSize("14");
$run1->getFont()->setColor($phpColor);

可以成为

$objRichText = new PHPExcel_RichText();
$run1 = $objRichText->createTextRun('Main Part of the Title, ')
    ->getFont()->setBold(true)
        ->setName("Calibri")
        ->setSize("14")
        ->setColor($phpColor);

您尝试从数组应用可能会失败,因为您的数组包含对font的顶级引用,并且您尝试将其设置为字体...尝试仅为属性设置它可以应用于字体:

$run2->getFont()
    ->applyFromArray(array( "bold" => true, "size" => 10, "name" => "Calibri", "color" => $phpColor)
);

我自己从未尝试过,所以没有保证

答案 1 :(得分:1)

所以最终版本,文本的每个部分只有2行(非常感谢@Mark_Baker):

<?php
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';

$objPHPExcel = new PHPExcel();

$phpColor = new PHPExcel_Style_Color();
$phpColor->setRGB("0070C0");

$objRichText = new PHPExcel_RichText();
$run1 = $objRichText->createTextRun('Main Part of the Title, ');
$run1->getFont()->applyFromArray(array( "bold" => true, "size" => 14, "name" => "Calibri", "color" => array("rgb" => "0070C0")));

$run2 = $objRichText->createTextRun(' and some extra');
$run2->getFont()->applyFromArray(array( "bold" => true, "size" => 10, "name" => "Calibri", "color" => array("rgb" => "0070C0")));

$objPHPExcel->getActiveSheet()->setCellValue("A1", $objRichText);
header ( 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' );
header ( 'Content-Disposition: attachment;filename="sq_test.xlsx"' );
header ( 'Cache-Control: max-age=0' );
$objWriter = PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel2007' );
$objWriter->save ( 'php://output' );
?>

希望这可以帮助其他人。 ,