Я пытаюсь экспортировать данные пользователя в файл .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'));
}
После загрузки файла doc результат такой:
{"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"}
Я хочу, чтобы результат был хорошо отформатирован, например, с заголовком «Имя», «Электронная почта» и т. д.
чего ты хочешь добиться? Как его форматировать? Одно решение - это решение, предложенное eMM (используйте TemplateProcessor), другое решение - добавить текст, как вы это делаете, но вы должны отформатировать текст перед его добавлением. Посмотрите примеры в файле samples / Sample_04_Textrun.php.






Шаг 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'));
}
public function wordExport($id){
$doc = Doc::find($id);
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('word-template/document.docx');
$title = $doc->title;
$reg = $doc->reg;
$templateProcessor->setValue('title', $title);
$templateProcessor->setValue('reg', $reg);
$fileName = $title;
$templateProcessor->saveAs($fileName . '.docx');
return response()->download($fileName . '.docx')->deleteFileAfterSend(true);
}
Привет, вот мой код, он работает хорошо. Но теперь я застрял - как сохранить в формате pdf?
в phpword версии 0.13.0:
addText(string $text, mixed $fStyle = null, mixed $pStyle = null), т.е. вам нужно передать отформатированный текст нить в функцию addText в качестве первого параметра.