当前位置:首页 > PHP > 正文内容

laravel通过模板html生成word文档

陈杰1年前 (2020-12-01)PHP990


因为公司项目需要,内部的管理系统有一个php实时查询数据库,根据内容来生成word文档

排版没有什么需求,实现原理是查询数据库,然后用laravel自带的模板引擎,生成一个html网页,然后修改网页的response的header头,让浏览器下载为word格式。

代码如下

image.png

public function highAnswerDowload(Request $request)
{
       $id   = (int)$request->input('id');
       $data = LibraryTopicModel::with(['library:id,name', 'answer' => function ($query) {
           return $query->where('status', 1);
       }, 'answer.member:id,name,phone'])->find($id);

       if (!isset($data))
           return self::errorMsg('没有找到该题目');
       $html     = view('word', ['data' => $data]);
       $wordname = $data['library']['name'] . date('Y-m-d') . "待审核高分答案.docx";
       ob_start();
       echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"
   xmlns:w="urn:schemas-microsoft-com:office:word"
   xmlns="http://www.w3.org/TR/REC-html40">';

       @header('Content-type:application/word');
       header('Content-Disposition: attachment; filename=' . $wordname . '');
       @readfile($wordname);
       ob_flush();//每次执行前刷新缓存
       flush();
       return $html;
}


模板文件

<html lang="zh-cn">
<head>
    <style type="text/css">
        p {
            text-indent: 2em;
            font-size: 12pt;
        }
    </style>
</head>
<body>
<center><h1>{{$data['library']['name']}}</h1></center>
<b>
    {{$data['title']}} -- 题目id:{{$data['id']}}
</b>
<br>
<br>
@foreach($data['answer'] as $v)
    <div>
        <div style="font-weight: bold">
            <div>昵称:{{$v['member']['name']}} &nbsp;&nbsp;&nbsp; id:{{$v['member_id']}} &nbsp;&nbsp;&nbsp;
                手机:{{$v['member']['phone']}} </div>
            <div>答案id:{{$v['id']}} &nbsp;&nbsp;&nbsp; 日期:{{date('Y-m-d H:i',$v['create_time'])}}</div>
        </div>
        <?php $content = explode("\n", $v['content']); ?>
        @foreach($content as $j)
            <p>
                {{$j}}
            </p>
        @endforeach
        ——————————————————————————————————
        <br>
    </div>
@endforeach
</body>
</html>


扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由何烦过虎溪发布,如需转载请注明出处。

转载请注明出处:http://95shouyou.com/?id=14

标签: php生成word
分享给朋友:

相关文章

laravel跨库多态关联实战

laravel跨库多态关联实战

点赞记录表做了分库分表,位于副库里面表结构该点赞表关联了8个不同的表,因为业务原因,评论回复表有四个板块,所以做了4个评论记录表,4个回复记录表,且结构有细微不同。目标是用户获得被点赞记录,根据不同的...

laravel分表model映射的思路

预先估计会出现大数据量并且访问频繁的表,将其分为若干个表这种预估大差不差的,论坛里面发表帖子的表,时间长了这张表肯定很大,几十万,几百万都有可能。 聊天室里面信息表,几十个人在一起一聊一个晚上,时间长...

七牛云删除文件和批量删除文件

在项目中因为用到了七牛云的对象存储,价格公道,也降低我们的项目维护成本。但是在实际使用过程中,例如用户换了头像我们就需要删除用户之前的头像,以降低我们的存储成本。所以研究了一下七牛云的删除单个文件和批...

php对接七牛云短信验证码实战

短信验证码登录的用处非常的大,登录,注册,修改密码,安全相关的啥都可以干。选定的七牛云短信是因为存储也是用的七牛云,七牛的sdk都加载进来了,也懒得去换其他的厂家了。下面上代码:Controller层...

laravel集成极光推送实战

公司项目需要用到app推送消息通知,市面上很多推送渠道商,选来选去最终选定了极光推送,因为项目使用laravel写的,laravel自身又有模型事件,所以研究了一下,在不改动原有代码的情况下,给项目加...

php接淘宝联盟,阿里妈妈,实现淘宝客功能

php接淘宝联盟,阿里妈妈,实现淘宝客功能

需要用到的sdk在淘宝开放平台自行下载生成淘宝需要用到的配置文件private function get_tb_config(){    $config = ConfigModel...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。