Ourren

关注技术,记录生活.

Yii框架使用Word扩展插件

| 留言

MS Office套件的复合文件格式(特别是Word和PPT)一直是编程人员比较恼火的问题:不能通过简单的编程来自动生成Word或者PPT文件,但是从Office 2007开始微软逐渐开放其格式(可以理解未:单一的Office文件相当于一个zip的压缩包,其文件的内容可以通过编程来修改),因此诞生了基于各种脚本语言的office库。现在看来其具体实现的方法有如下几种:

  1. 通过OLE接口来生成文件(仅限于Windows平台),即通过微软提供的接口来实现,在Office 2007之前也可以通过这种方法实现;

  2. 通过文档的格式来进行生成。由于微软Office 2007开放了格式并且其格式相当简单,因此可以通过程序来直接生成格式。这块技术有非常出名的PHPOffice

其中excel的格式相对比较简单,各种脚本语言都可以快速地生成excel文件。YII框架也有针对excel库非常方便的扩展插件:yiiexcel,而针对Word格式的扩展插件目前基本上还没有,而github上的yii-phpword使用的时候存在一次问题,本文基于YII框架提出了一个使用Word的扩展插件,项目地址:yii-word

使用时具体配置如下:

  1. 从github下载文件并解压;
  2. protected/extensions创建新目录(yiiword);
  3. 将下载的YiiWord.php文件放在 (protected/extensions/yiiword)目录下;
  4. 下载最新的版本的PHPWord: https://phpword.codeplex.com/;
  5. 解压文件并放在protected/vendor/PHPWord/目录下,需要新建PHPWord目录;
  6. 在main.php中导入库“application.vendors.PHPWord.PHPWord”;

使用如下:

Yii::import(‘ext.yiiword.YiiWord’, true); Yii::registerAutoloader(array(‘YiiWord’, ‘autoload’), true); $PHPWord = new PHPWord(); $section = $PHPWord->createSection(); $section->addText(‘Hell Wordl!’);//添加内容 $section->addTextBreak();//添加空行 //生成下载页面 $filename = time(); header(‘Content-Type: application/vnd.ms-word’); header(‘Content-Disposition: attachment;filename=”’.$filename.’.docx”’); header(‘Cache-Control: max-age=0’); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, ‘Word2007’); $objWriter->save(‘php://output’); unset($this->objWriter); exit();

其它高级使用文档可以参考PHPWord的官方文档

参考链接:

  1. phpword;
  2. yii-phpword;
  3. yiiexcel