gpt4 book ai didi

php - 在 laravel 中使用 PHPWord 导出到 docx 时传递动态值

转载 作者:可可西里 更新时间:2023-11-01 00:39:27 27 4
gpt4 key购买 nike

我正在尝试将用户详细信息导出到 .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":"emdadulshikder@gmail.com","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"}

我想获得格式正确的结果,例如标题为“姓名”、“电子邮件”等。

最佳答案

第 1 步:使用文字处理程序(OpenOffice、LibreOffice Writer、MS Word 等)创建一个 .docx 文件,该文件将用作“用户文档”的模板(这样您可以设置大小、边距、方向和其他属性,并使用您使用的文字处理程序中提供的工具创造性地格式化您的文档。

对于文档中的动态值,您可以使用变量作为占位符。文档变量的语法是 ${variable}。确保您的变量名称是唯一的。

这是带有文档变量的示例文档模板的屏幕截图。 enter image description here

第 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'));
}

关于php - 在 laravel 中使用 PHPWord 导出到 docx 时传递动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49254352/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com