Библиотека PHP Word: как сделать так, чтобы скрипт не перезаписывал, а дополнял созданный docx?

Написал парсер, хочу циклом записывать получаемые данные в .docx файл. Использую библиотеку PHP Word.

Обработка и загрузка данных производится не одним пуском программы. Скрипт отработал - пауза - запустили снова, еще некоторое кол-во информации обработал и тд (пришлось так сделать из-за лимитов по запросам). Так же порционно он должен записывать в docx. Вот код:

Создаю экземпляр класса PHP Word:

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

PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);

$section = $phpWord->addSection(array('lineNumbering' => 'newPage'));

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');

Дальше в цикле foreach() получаю xml и готовлю их к записи. Наконец, записываю:

if($key === 0) {
            $section->addText('Отчет по публикациям информационного агентства');

        }

        $section->addText($res);

        $section->addText($lo);

        $section->addTextBreak();

        $objWriter->save('helloWorld.docx');

Первый проход цикла успешно записывает информацию, но следующий, вместо того, чтобы записать ниже продолжение - удаляет старое и поверх записывает новое. Подскажите, пожалуйста, как записать новое ниже уже имеющейся в файле информации.

На каждом проходе цикла в $res и $lo кладутся новые значения - url и заголовки..

Опробованные алгоритмы дозаписи, которые не сработали:

 1)       if($key === 0) {
            $section->addText('Отчет по публикациям информационного агентства');

            $section->addText($res);

            $section->addText($lo);

            $section->addTextBreak();

            $objWriter->save('helloWorld.docx');

        }

        $templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('helloWorld.docx');

        $templateProcessor->addText($res);

        $templateProcessor->addText($lo);

        $templateProcessor->saveAs('helloWorld.docx');
  1. if($key === 0) { $section->addText('Отчет по публикациям информационного агентства');

         $section->addText($res);
    
         $section->addText($lo);
    
         $section->addTextBreak();
    
         $objWriter->save('helloWorld.docx');
    
     }
    
    
     $fragment = $phpWord->addSection();
    
     $fragment->addText('ПРИВЕТ, ВСЕ РАБОТАЕТ НОРМАЛЬНО');
    
     $objWriter->save('helloWorld.docx');
    
     sleep(30);
    

    }

Полный код, как он есть

$tmp = array_slice($matches[0], $_SESSION["time"], -1, true);

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

PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);

$section = $phpWord->addSection();

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');

foreach ($tmp as $key => $value) {

    if (is_string($value)) {
        /*var_dump(substr($value, 21));*/
        $cut = $value;
        $output = 'https://yandex.ru/search/xml?user=&key=&query=' . urlencode($cut) . '&lr==ru&sortby=&filter=none&maxpassages=5&groupby=ocs-in-group%3D3';

        $result = file_get_contents($output);

        $al = simplexml_load_string($result);

        $clay = $al->{'response'}->results->grouping->group[0]->doc->title->hlword;
        echo '<pre>';
        print_r($al);
        echo '<pre>';

        foreach ($clay as $sd) {
            $arr[] = '' . $sd . '';
        }
        $res = implode(" ", $arr);

        $arr = [];

        $lo = $al->{'response'}->results->grouping->group[0]->doc->url;

        if($key === 0) {
            $section->addText('Отчет по публикациям информационного агентства');
            
        }

        $section->addText($res);

        $section->addText($lo);

        $section->addTextBreak();

        $objWriter->save('helloWorld.docx');

    if($key % 3 == 1) {
        $key = $key + 1;
        break;
    }

}

$_SESSION["time"] = $key;

Ответы (0 шт):