php导出word

使用composer下载PHPWord到项目中

composer require phpoffice/phpword

创建模板对象

//创建模板对象
        $document = new TemplateProcessor(ROOT_PATH.'template/user.docx');

word模板里这样赋值

插入字段

//插入字段
        $document->setValue('member_name',$result['member_name']);
        $document->setValue('hierarchy',$result['hierarchy']);

如果需要插入图片

//图片处理
        if(empty($result['product_display'])){
            $document->setValue('product_display','');
        }else{
            $path = './'.$result['product_display'];
            $picParam = ['path'=>$path,'width'=>470,'height'=>110];
            $document->setImageValue('product_display',$picParam);
        }

保存模板

//保存模板
        $document->saveAs('./user.docx');

 下载这个保存的文件

//获取html文档的内容(包括html代码)
        $result = file_get_contents('user.docx');
        echo $result;

        //打开缓冲区
        ob_start();
        header("Cache-Control: public");
        Header("Content-type: application/octet-stream");
        Header("Accept-Ranges: bytes");

        //判断浏览器类型
        if (strpos($_SERVER["HTTP_USER_AGENT"],'MSIE')) {
            header('Content-Disposition: attachment; filename=user.docx');
        }else if (strpos($_SERVER["HTTP_USER_AGENT"],'Firefox')) {
            Header('Content-Disposition: attachment; filename=user.docx');
        } else {
            header('Content-Disposition: attachment; filename=user.docx');
        }

        //不使用缓存
        header("Pragma:no-cache");
        //过期时间
        header("Expires:0");
        //输出全部内容到浏览器
        ob_end_flush();

如果插入的字段需要换行,那么在控制器里处理数据

$service_name = implode('<w:br />',$service_arr);

如果插入的数据为数组循环出来的时,也需要进行数据处理

$provide = $this->provide->where('pid',$id)->select()->toArray();
$p = [];
foreach ( $provide as $k => $v ){
    $p[] = ($k+1).'、产品类别'.$v['category_name'].',上市时间'.$v['start_time'].'月至'.$v['end_time'].'月,上年产能'.$v['capacity_lastyear'].'斤(头、羽、尾、台、人次、间数、笔),今年预计产能'.$v['capacity_thisyear'].'斤(头、羽、台、人次、间数、笔)。';
}
$pStr = implode('<w:br />',$p);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值