我希望能够更改所选事件的背景
当我设置了bgColor或fgColor时,它将整个背景设置为一种颜色而不是设置的行。
在我的代码中,我在foreach循环中生成文本
如下图所示,我希望能够为某些行设置文本背景
问题:如何确保只有设置的行更改背景
public function export() {
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$leftTabStyleName = 'centerTab';
$phpWord->addParagraphStyle($leftTabStyleName, array('tabs' => array(new \PhpOffice\PhpWord\Style\Tab('center', 4680))));
// New portrait section
$section = $phpWord->addSection();
// Add listitem elements
$fontStyle = new \PhpOffice\PhpWord\Style\Font();
$fontStyle->setBold(false);
$fontStyle->setName('Tahoma');
$fontStyle->setSize(16);
$section->addText("\tClub Program " . date('Y') .' / ' . date('Y', strtotime('+1 year')), $fontStyle, $leftTabStyleName);
$section->addTextBreak();
$event_lists = 'event_lists';
$phpWord->addParagraphStyle(
$event_lists,
array(
'tabs' => array(
new \PhpOffice\PhpWord\Style\Tab('left', 1000),
new \PhpOffice\PhpWord\Style\Tab('center', 1000),
new \PhpOffice\PhpWord\Style\Tab('right', 1000),
)
)
);
$results = $this->get_events_for_export();
foreach ($results as $result) {
//$date = strtotime($result['event_date']);
$date = strtotime($result['event_date']);
$month_group = date('M', $date);
$year_group = date('Y', $date);
if (!isset($month_isset[$year_group][$month_group]))
{
$month_isset[$year_group][$month_group] = [];
} else {
$month_group = '';
}
if (isset($result['bg_color'])) {
$font = array('fgColor' => \PhpOffice\PhpWord\Style\Font::FGCOLOR_YELLOW);
$section->addText($month_group ."\t". date('d', $date) ."\t". date('D', $date) ."\t". htmlentities($result['event_title']), $font, $event_lists);
} else {
$section->addText($month_group ."\t". date('d', $date) ."\t". date('D', $date) ."\t". htmlentities($result['event_title']), null, $event_lists);
}
}
$filename = 'club_program-' . time() . '.docx';
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save("php://output");
exit();
}