PHPExcel - 如何简化设置具有 2 种字体大小的单个单元格
PHPExcel - How to simplify setting a single cell with 2 font sizes
我有一个用 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->getFont() 行 ...
$run2->getFont()->applyFromArray(array("font" => array( "bold" => true, "size" => 10, "name" => "Calibri", "color" => $phpColor)));
它没有产生错误...但没有根据默认设置调整字体...但如果可能的话,这是我真正想要的那种简化。
嗯,你可以使用流畅的界面稍微简化一下:
$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)
);
我自己从未直接尝试过,所以不能保证
所以最终版本,每个文本部分只有 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' );
?>
希望这对一路走来的其他人有所帮助。
,
我有一个用 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->getFont() 行 ...
$run2->getFont()->applyFromArray(array("font" => array( "bold" => true, "size" => 10, "name" => "Calibri", "color" => $phpColor)));
它没有产生错误...但没有根据默认设置调整字体...但如果可能的话,这是我真正想要的那种简化。
嗯,你可以使用流畅的界面稍微简化一下:
$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)
);
我自己从未直接尝试过,所以不能保证
所以最终版本,每个文本部分只有 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' );
?>
希望这对一路走来的其他人有所帮助。 ,