Home > front end >  How to use MDword to generate multi-level nested Office Word?
How to use MDword to generate multi-level nested Office Word?

Time:04-25

effect picture:
https://i.stack.imgur.com/f2r3O.png
github address:
https://github.com/mkdreams/MDword
data:
     $arr = [
    [
    "title1" => "title1",
    "meeting_content"=>[
    [
    "title11" => "title11,title11",
    "content11" => "content,content,content,content,content,content,content,content,content,"
    ],
    [
    "title22" => "title22,title22",
    "content22" => "content,content,content,content,content,content,content,content,content,"
    ],
    ],
    "children" => []
    ],
    [
    "title" => "title",
    "meeting_content"=>[
    ],
    "children"=>[
    [
    "title1" => "title1",
    "meeting_content"=>[
    [
    "title11" => "title11,title11",
    "content11" => "content,content,content,content,content,content,content,content,content,"
    ],
    [
    "title22" => "title22,title22",
    "content22" => "content,content,content,content,content,content,content,content,content,"
    ],
    ],
    ],
    [
    "title2" => "title2",
    "meeting_content"=>[
    [
    "title11" => "title11,title11",
    "content11" => "content,content,content,content,content,content,content,content,content,"
    ],
    [
    "title22" => "title22,title22",
    "content22" => "content,content,content,content,content,content,content,content,content,"
    ],
    ],
    ],
    ],
    ],
    ];

How to use MDword to generate multi-level nested Office Word? Now I need to, using a MDword extension of PHP, write this multidimensional data into a Word document, I don't know what to do, it has the effect picture, and Github address, thank you

CodePudding user response:

You can use pstyle.You can see the demo.

Details as follows(You must update to the latest version):

data

$numDatas = [
    [
        'title'=>'title-1',
        'content'=>'content-1'
    ],
    [
        'title'=>'title-2',
        'sub'=>[
            [
                'title'=>'subTitle-2-1',
                'content'=>'content-2-1',
            ],
            [
                'title'=>'subTitle-2-2',
                'content'=>'content-2-2',
            ],
        ]
    ],
    [
        'title'=>'title-3',
        'sub'=>[
            [
                'title'=>'subTitle-3-1',
                'content'=>'content-3-1',
            ],
            [
                'title'=>'subTitle-3-2',
                'content'=>'content-3-2',
            ],
        ]
    ],
];

temple IMG: https://i.stack.imgur.com/dS1U1.png

code

$TemplateProcessor->cloneP('num',count($numDatas));
foreach($numDatas as $idx => $numData) {
    $TemplateProcessor->cloneP('num'.'#'.$idx,3);

    $TemplateProcessor->setValue('num'.'#'.$idx.'#0',[['text' => $numData['title'], 'pstyle' => 'numstyle-level-1', 'type' => MDWORD_TEXT]]);

    if(isset($numData['content'])) {
        $TemplateProcessor->setValue('num'.'#'.$idx.'#1',[['text' => $numData['content'], 'pstyle' => 'numstyle-level-3', 'type' => MDWORD_TEXT]]);
    }else{
        $TemplateProcessor->deleteP('num'.'#'.$idx.'#1');
    }

    $subName = 'num'.'#'.$idx.'#2';
    if(isset($numData['sub'])) {
        $TemplateProcessor->cloneP($subName,count($numData['sub']));

        foreach($numData['sub'] as $subIdx => $subData) {
            $TemplateProcessor->cloneP($subName.'#'.$subIdx,2);

            $TemplateProcessor->setValue($subName.'#'.$subIdx.'#0',[['text' => $subData['title'], 'pstyle' => 'numstyle-level-2', 'type' => MDWORD_TEXT]]);
            $TemplateProcessor->setValue($subName.'#'.$subIdx.'#1',[['text' => $subData['content'], 'pstyle' => 'numstyle-level-3', 'type' => MDWORD_TEXT]]);
        }
    }else{
        $TemplateProcessor->deleteP($subName);
    }
}
$TemplateProcessor->deleteP('numstyle');

result IMG: https://i.stack.imgur.com/sb0MB.png

  •  Tags:  
  • php
  • Related