在Laravel中使用PHPWord导出到docx时传递动态值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Laravel中使用PHPWord导出到docx时传递动态值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2563字,纯文字阅读大概需要4分钟。
内容图文
![在Laravel中使用PHPWord导出到docx时传递动态值](/upload/InfoBanner/zyjiaocheng/686/8c66e25589a04a8b8887c4cbecbc2049.jpg)
我正在尝试将用户详细信息导出到.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}.确保变量名是唯一的.
这是带有文档变量的示例文档模板的屏幕截图.
第2步:
将文档模板上载到服务器的存储路径.
第三步:
创建一个新的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);
第四步:
生成一个安全的文件名(即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'));
}
内容总结
以上是互联网集市为您收集整理的在Laravel中使用PHPWord导出到docx时传递动态值全部内容,希望文章能够帮你解决在Laravel中使用PHPWord导出到docx时传递动态值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。