1
回答
PHPWord 生成多页word文档,怎么让每页的列表元素序号都从1开始?求高手指点
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

用 PHPWord 一次生成多页word文档,但是每页的列表元素序号都是延续的前一页的号,怎么让每页的序号从1开始?求高手指点

以下是 代码 和 效果截图:

$phpWord = new \PhpOffice\PhpWord\PhpWord();

        $phpWord->setDefaultFontName('微软雅黑');
        $phpWord->setDefaultFontSize(15);
        $phpWord->setDefaultParagraphStyle(
                array(
                    'align'       => 'left',
                    'spaceBefore' => \PhpOffice\PhpWord\Shared\Converter::pointToTwip(0),
                    'spaceAfter'  => \PhpOffice\PhpWord\Shared\Converter::pointToTwip(0),
                    'spacing'     => 60,
                )
            );

        $sectionStyle = array('orientation' => null,
                'marginLeft' => 1700,
                'marginRight' => 1700,
                'marginTop' => 1450,
                'marginBottom' => 1450);
        $section = $phpWord->addSection($sectionStyle);

        $phpWord->addNumberingStyle(
                'multilevel',
                array(
                    'type'   => 'multilevel',
                    'levels' => array(
                        array('format' => 'decimal', 'text' => '%1.', 'left' => 600, 'hanging' => 600, 'tabPos' => 600),
                        array('format' => 'upperLetter', 'text' => '%2.', 'left' => 1050, 'hanging' => 600, 'tabPos' => 1050),
                    ),
                )
            );

        $data = array(
                  0 => array('year'=>'2013','month'=>array('1','2','3')),
                  1 => array('year'=>'2014','month'=>array('1','2','3')),
                  2 => array('year'=>'2015','month'=>array('1','2','3')),
                );
        $i = 0;
        foreach ($data as $val) {
            if ($i > 0) {
                $section->addPageBreak();
            }

            $section->addTitle(htmlspecialchars("{$val['year']}年 标题标题标题"));
            $section->addText(
                        htmlspecialchars('内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容'),
                        false,
                        array('keepNext' => true, 'indentation' => array('firstLine' => 600))
                      );

            $section->addListItem(htmlspecialchars("{$val['month'][0]}月:第一条第一条第一条第一条第一条"), 0, null, 'multilevel');
            $section->addListItem(htmlspecialchars("{$val['month'][1]}月:第二条第二条第二条第二条第二条"), 0, null, 'multilevel');
            $section->addListItem(htmlspecialchars("{$val['month'][2]}月:第三条第三条第三条第三条第三条"), 0, null, 'multilevel');

            $i++;
        }

        $filename = 'PHPWord-Test';
        $extension = '.docx';
        $targetFile = __DIR__ . '\\' . $filename . $extension;
        $phpWord->save($targetFile, 'Word2007');



举报
共有1个答案 最后回答: 2年前

再增加一个新的

multilevel-2
引用这个新的序号又从1开始了。

$phpWord->addNumberingStyle(
                'multilevel-2',
                array(
                    'type'   => 'multilevel',
                    'levels' => array(
                        array('format' => 'decimal', 'text' => '%1.', 'left' => 600, 'hanging' => 600, 'tabPos' => 600),
                        array('format' => 'upperLetter', 'text' => '%2.', 'left' => 1050, 'hanging' => 600, 'tabPos' => 1050),
                    ),
                )
            );

顶部