分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

Laravel生成Word文档 - phpword

发布时间:2023-09-06 01:39责任编辑:赖小花关键词:word

在项目实际开发或学习中,会遇到把数据导出生成word文档的需求。这里就用优雅、流行的laravel框架,来简单的教大家实现。 
phpword,它可以很方便的实现word文档的生成,同时可以在word中添加表格、目录、图片、超链接、页眉、页脚等功能强大。

安装phpWord

要求

强制性:

PHP 5.3.3+

  • XML解析器扩展
  • Zend \ Escaper组件
  • Zend \ Stdlib组件
  • Zend \ Validator组件

可选的:

-邮编扩展 
- GD扩展 
- XMLWriter扩展 
- XSL扩展 
- dompdf库

PHPWord通过Composer安装。你只需要在你的包中添加对PHPWord的依赖。

{ ????“require” : { ????“phpoffice / phpword” : “v0.14。*??” ????} }

添加后执行 

composer install

  

另外,还可以通过命令行安装,如 

composer require phpoffice/phpword

示例代码

 ?1 $phpWord = new \PhpOffice\PhpWord\PhpWord(); ?2 ????????//设置默认样式 ?3 ????????$phpWord->setDefaultFontName(‘仿宋‘);//字体 ?4 ????????$phpWord->setDefaultFontSize(16);//字号 ?5 ??6 ????????//添加页面 ?7 ????????$section = $phpWord->createSection(); ?8 ??9 ????????//添加目录 10 ????????$styleTOC ?= [‘tabLeader‘ => \PhpOffice\PhpWord\Style\TOC::TABLEADER_DOT]; 11 ????????$styleFont = [‘spaceAfter‘ => 60, ‘name‘ => ‘Tahoma‘, ‘size‘ => 12]; 12 ????????$section->addTOC($styleFont, $styleTOC); 13 ?14 ????????//默认样式 15 ????????$section->addText(‘Hello PHP!‘); 16 ????????$section->addTextBreak();//换行符 17 ?18 ????????//指定的样式 19 ????????$section->addText( 20 ????????????‘Hello world!‘, 21 ????????????[ 22 ????????????????‘name‘ => ‘宋体‘, 23 ????????????????‘size‘ => 16, 24 ????????????????‘bold‘ => true, 25 ????????????] 26 ????????); 27 ????????$section->addTextBreak(5);//多个换行符 28 ?29 ????????//自定义样式 30 ????????$myStyle = ‘myStyle‘; 31 ????????$phpWord->addFontStyle( 32 ????????????$myStyle, 33 ????????????[ 34 ????????????????‘name‘ => ‘Verdana‘, 35 ????????????????‘size‘ => 12, 36 ????????????????‘color‘ => ‘1BFF32‘, 37 ????????????????‘bold‘ => true, 38 ????????????????‘spaceAfter‘ => 20, 39 ????????????] 40 ????????); 41 ????????$section->addText(‘Hello Laravel!‘, $myStyle); 42 ????????$section->addText(‘Hello Vue.js!‘, $myStyle); 43 ????????$section->addPageBreak();//分页符 44 ?45 ????????//添加文本资源 46 ????????$textrun = $section->createTextRun(); 47 ????????$textrun->addText(‘加粗‘, [‘bold‘ => true]); 48 ????????$section->addTextBreak();//换行符 49 ????????$textrun->addText(‘倾斜‘, [‘italic‘ => true]); 50 ????????$section->addTextBreak();//换行符 51 ????????$textrun->addText(‘字体颜色‘, [‘color‘ => ‘AACC00‘]); 52 ?53 ????????//超链接 54 ????????$linkStyle = [‘color‘ => ‘0000FF‘, ‘underline‘ => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE]; 55 ????????$phpWord->addLinkStyle(‘myLinkStyle‘, $linkStyle); 56 ????????$section->addLink(‘http://www.baidu.com‘, ‘百度一下‘, ‘myLinkStyle‘); 57 ????????$section->addLink(‘http://www.baidu.com‘, null, ‘myLinkStyle‘); 58 ?59 ????????//添加图片 60 ????????$imageStyle = [‘width‘ => 480, ‘height‘ => 640, ‘align‘ => ‘center‘]; 61 ????????$section->addImage(‘./img/t1.jpg‘, $imageStyle); 62 ????????$section->addImage(‘./img/t2.jpg‘,$imageStyle); 63 ?64 ????????//添加标题 65 ????????$phpWord->addTitleStyle(1, [‘bold‘ => true, ‘color‘ => ‘1BFF32‘, ‘size‘ => 38, ‘name‘ => ‘Verdana‘]); 66 ????????$section->addTitle(‘标题1‘, 1); 67 ????????$section->addTitle(‘标题2‘, 1); 68 ????????$section->addTitle(‘标题3‘, 1); 69 ?70 ????????//添加表格 71 ????????$styleTable = [ 72 ????????????‘borderColor‘ => ‘006699‘, 73 ????????????‘borderSize‘ => 6, 74 ????????????‘cellMargin‘ => 50, 75 ????????]; 76 ????????$styleFirstRow = [‘bgColor‘ => ‘66BBFF‘];//第一行样式 77 ????????$phpWord->addTableStyle(‘myTable‘, $styleTable, $styleFirstRow); 78 ?79 ????????$table = $section->addTable(‘myTable‘); 80 ????????$table->addRow(400);//行高400 81 ????????$table->addCell(2000)->addText(‘学号‘); 82 ????????$table->addCell(2000)->addText(‘姓名‘); 83 ????????$table->addCell(2000)->addText(‘专业‘); 84 ????????$table->addRow(400);//行高400 85 ????????$table->addCell(2000)->addText(‘2015123‘); 86 ????????$table->addCell(2000)->addText(‘小明‘); 87 ????????$table->addCell(2000)->addText(‘计算机科学与技术‘); 88 ????????$table->addRow(400);//行高400 89 ????????$table->addCell(2000)->addText(‘2016789‘); 90 ????????$table->addCell(2000)->addText(‘小傻‘); 91 ????????$table->addCell(2000)->addText(‘教育学技术‘); 92 ?93 ????????//页眉与页脚 94 ????????$header = $section->createHeader(); 95 ????????$footer = $section->createFooter(); 96 ????????$header->addPreserveText(‘页眉‘); 97 ????????$footer->addPreserveText(‘页脚 - 页数 {PAGE} - {NUMPAGES}.‘); 98 ?99 ????????//生成的文档为Word2007100 ????????$writer = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, ‘Word2007‘);101 ????????$writer->save(‘./word/hello.docx‘);102 103 ????????//将文档保存为ODT文件... 104 ????????$writer = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, ‘ODText‘);105 ????????$writer->save(‘./word/hello.odt‘);106 107 ????????//将文档保存为HTML文件... 108 ????????$writer = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, ‘HTML‘);109 ????????$writer->save(‘./word/hello.html‘);

注意: Word转HTML时,Word 文档载入的目录写的是相对路径,写绝对路径 
时会报错,这个我没有解决,如有方法请留言

参考文档地址:http://phpword.readthedocs.io/en/latest/intro.html

效果图如下:

Laravel生成Word文档 - phpword

原文地址:https://www.cnblogs.com/duanyingkui/p/8367411.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved