@ventacom

Как из разных word документов собрать все таблицы (средствами PHPOffice/PHPWord) с заданным названием и сохранить в один файл?

Добрый день! Имеется папка с 30+ документами формата docx. Каждый файл имеет схожее содержание и все содержат в себе таблицу с названием "Таблица 7.1" Как средствами библиотеки PHPOffice/PHPWord забрать целиком эту таблицу из каждого файла папки и сохранить набор таблиц в единый документ doc?

код представил ниже. Сейчас он не смотря на проверку, что берем только таблицы забирает весь документ полностью и сохраняет его. При этом сохраняется лишь содержимое последнего пройденного документа
require_once __DIR__ . '/vendor/autoload.php';

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

$objReader = \PhpOffice\PhpWord\IOFactory::createReader('Word2007');

$filelist = glob(__DIR__."/docs/*.docx");

if ($filelist) {
    foreach ($filelist as $source) {
    
        $phpWord = $objReader->load($source); 

        foreach($phpWord->getSections() as $section) {
            $arrays = $section->getElements();
           
            foreach($arrays as $el) {
                if(get_class($el) === 'PhpOffice\PhpWord\Element\Table') {
                    $phpWord->addSection($el);
                }
            }   
            
        }

    }

    $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
    $objWriter->save('helloWorld.docx');
}
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
сохраняется лишь содержимое последнего пройденного документа
Это потому, что вы в цикле перезатираете значение переменной $phpWord, в которую хотите собирать результат. По этой же причине, скорее всего, вы видите "весь документ" в результате - вы просто в конец существующего добавляете его же таблицы ещё раз.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы