передавать динамические значения при экспорте в docx с использованием PHPWord в laravel

Я пытаюсь экспортировать данные пользователя в .DOCX файл. Файл успешно экспортирован, но он дает объект. Формат Phpword не работает. Как написать код для правильного экспорта динамических значений, кто-нибудь поможет мне, пожалуйста?

В AdminController.php

public function exportUserToDoc(Request $request, $id)
{
$wordTest = new \PhpOffice\PhpWord\PhpWord();
$newSection = $wordTest->addSection();

$desc1 = User::find($id);

$newSection->addText($desc1, array('name' => $desc1->name, 'email' => $desc1->email, 'phone' => $desc1->phone, 'address' => $desc1->address));
$objectWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordTest, 'Word2007');
try{
$objectWriter->save(storage_path('TestWordFile.docx'));
}catch (Exception $e){

}
return response()->download(storage_path('TestWordFile.docx'));
}

После загрузки файла документа результат выглядит так:

{"id":1,"name":"Emdadul Huq Shikder","email":"[email protected]","phone":"+8801674338411","address":"59\/6\/1 West Razabazar, Dhaka","status":0,"created_at":"2018-03-13 05:18:32","updated_at":"2018-03-13 05:35:51"}

Я хочу получить результат также хорошо отформатированный, например, с заголовком «Имя», «Электронная почта» и т. Д.

3

Решение

Шаг 1:
Создать .docx файл с помощью программы обработки текста (OpenOffice, LibreOffice Writer, MS Word и т. д.), которая будет служить шаблоном вашего «Пользовательского документа» (таким образом, вы можете устанавливать размер, поля, ориентацию и другие атрибуты, а также творчески форматировать документ, используя инструменты, предоставляемые в используемой вами программе обработки текста).

Для динамических значений в вашем документе вы можете использовать переменные в качестве заполнителей. Синтаксис переменной документа: ${variable}, Убедитесь, что имена ваших переменных уникальны.

Вот снимок экрана примера шаблона документа с переменными документа.
введите описание изображения здесь

Шаг 2:
Загрузите шаблон вашего документа в хранилище вашего сервера.

Шаг 3:
Создать новый TemplateProcessor и присвойте значения переменным, которые вы поместили в шаблон документа.

$desc1 = User::find($id);

$my_template = new \PhpOffice\PhpWord\TemplateProcessor(storage_path('user_template.docx'));

$my_template->setValue('name', $desc1->name);
$my_template->setValue('email', $desc1->email);
$my_template->setValue('phone', $desc1->phone);
$my_template->setValue('address', $desc1->address);

Шаг 4:
Создать безопасное имя файла (user_1.docx т.е.)

Шаг 5:
Создать .docx файл из вашего шаблона с безопасным именем файла, сгенерированным на предыдущем шаге.

try{
$my_template->saveAs(storage_path('user_1.docx'));
}catch (Exception $e){
//handle exception
}

Шаг 6:
Полный фрагмент кода для загрузки сохраненного файла.

public function exportUserToDoc(Request $request, $id)
{
$desc1 = User::find($id);

$my_template = new \PhpOffice\PhpWord\TemplateProcessor(storage_path('user_template.docx'));

$my_template->setValue('name', $desc1->name);
$my_template->setValue('email', $desc1->email);
$my_template->setValue('phone', $desc1->phone);
$my_template->setValue('address', $desc1->address);

try{
$my_template->saveAs(storage_path('user_1.docx'));
}catch (Exception $e){
//handle exception
}

return response()->download(storage_path('user_1.docx'));
}
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]