laravel word to html,Laravel生成Word文档 - phpword(示例代码)

在项目实际开发或学习中,会遇到把数据导出生成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 //生成的文档为Word2007

100 $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 文档载入的目录写的是相对路径,写绝对路径

时会报错,这个我没有解决,如有方法请留言

效果图如下:

de1d014b2cbff772427ed7d31260c755.png

74df384f5900609057ea25fa2171a6a2.png

eb4aa7de0d01221817ed8196462a9b8e.png

9ac1887ef586b8eb6d21245b5f60c525.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值