如何在foreach中更改phpword中的文本背景

时间:2017-12-13 08:54:11

标签: php phpword

我希望能够更改所选事件的背景

当我设置了bgColor或fgColor时,它将整个背景设置为一种颜色而不是设置的行。

enter image description here

在我的代码中,我在foreach循环中生成文本

如下图所示,我希望能够为某些行设置文本背景

  

问题:如何确保只有设置的行更改背景

enter image description here

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();
}

0 个答案:

没有答案