前段时间在开发项目过程中因业务需求,要实现生成word文档并下载下来,第一次想到的页面html直接生成word文档,但在调试过程中发现很麻烦,因为数据动态获取要刷新页面,用户体验不好,后来看了写资料,直接通过php后台生成word并下载下来,经过一番测试,表现很完美,现在分享给大家。
1.功能需求描述
点击html页面某个按钮然后就生成word直接下载下来。
2.php生成woerd文档并下载下来源码
public function getWord(){
$id = I('id','','trim');
$info = D('Sqyy')
->alias('S')
->join('__XL__ X ON X.id = S.xl_id ')
->join('__LS__ L ON L.id = S.teacher_id ')
->where(array('S.id'=>$id,'S.status'=>1))
->field('S.*,X.name name,L.name teacher_name')
->find();
$time = date("Y-m-d H:i:s",$info['add_time']);
$str = '<div class=" box text-center">
<div>
<p>姓名:'.$info['xm'].'</p>
<p>性别:'.$info['xb'].'</p>
<p>学号:'.$info['xgh'].'</p>
<p>学院:'.$info['yxsmc'].'</p>
<p>班级:'.$info['classname'].'</p>
<p>咨询老师:'.$info['teacher_name'].'</p>
<p>咨询时间:'.$info['rq'].'/'.$info['sjd'].'</p>
<p>问题类型:'.$info['name'].'</p>
<p>基本情况:'.$info['jiben'].'</p>
<p>主诉内容:'.$info['zhusu'].'</p>
<p>初步评估及建议:'.$info['jianyi'].'</p>
</div>
</div>';
$fileName = '文件中心'.time().'.doc';
$this->downloadWord($str, $fileName);
}
public function downloadWord($content, $fileName='new_file.doc'){
if(empty($content)){ return;}
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$fileName");
$html = '<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">';
$html .= '<head><meta charset="UTF-8" /></head>';
echo $html . '<body>'.$content .'</body></html>';
}
发表评论 取消回复