不用说,这个功能很常见,也很实用,一个web平台做的好的话,可以为使用者省去不少事情,比如说根据用户填写的数据自动生成word文档。
这两天有人需要,我也就闲着做了个简单的demo,代码也是从网上搜罗了些,网上的文章大多比较乱,就在这里稍微记录一下。
1、纯php生成,用到了ob_start()和ob_get_contents(),用法是ob_start()生成后,在header之后的echo语句会存储在缓冲区,ob_get_contents()用来获取缓冲区的数据。
<?php class word { function start() { ob_start(); print‘<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">‘; } function save($path) { /*This echo will output to word.*/ echo "something"; /**/ print "</html>"; $data = ob_get_contents(); ob_end_clean(); $this->wirtefile ($path,$data); } function wirtefile ($fn,$data) { $fp=fopen($fn,"wb"); fwrite($fp,$data); fclose($fp); } } $word=new word; $word->start(); echo $cout; $wordname="word/客户.doc"; $word->save($wordname); ?>
2、将HTML网页自动保存到word,主要是一句header("Content-Type:application/msword");
<?php header("Content-type: text/html; charset=utf8"); //页面编码 header("Content-Type:application/msword"); //表示这个页面将要导出为word header("Content-Disposition:attachment;filename=".mb_convert_encoding("UUUU","gbk","utf8").".doc"); //该页面导出为word的文档名 header("Pragma:no-cache"); header("Expires:0"); ?> <html> <meta http-equiv=Content-Type content="text/html; charset=utf8"> <style media="print" type="text/css"> <!-- body { margin-left: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0cm; } --> </style> <body> <table width="100%" style=‘border-collapse:collapse;‘> <tr> <td width=‘24%‘ bgcolor=‘#CCCCCC‘ style=‘border:1px solid #000000;font-size:12px;‘>客户名称</td> <td width=‘13%‘ bgcolor=‘#CCCCCC‘ style=‘border:1px solid #000000;font-size:12px;‘>电话号码</td> <td width=‘32%‘ bgcolor="#CCCCCC" style=‘border:1px solid #000000;font-size:12px;‘>客户地址</td> <td width=‘11%‘ bgcolor="#CCCCCC" style=‘border:1px solid #000000;font-size:12px;‘>添加日期</td> <td width=‘20%‘ bgcolor="#CCCCCC" style=‘border:1px solid #000000;font-size:12px;‘>客户备注备注</td> </tr> <?php /*you can use php+SQL to fetch data.*/ ?> <tr> <td style=‘border:1px solid #000000;font-size:12px;‘>HHHH<?php /*echo data*/?></td> <td style=‘border:1px solid #000000;font-size:12px;‘>IIIIII<?php /*echo data*/?></td> <td style=‘border:1px solid #000000;font-size:12px;‘>UUUU<?php /*echo data*/?></td> <td style=‘border:1px solid #000000;font-size:12px;‘>PPPPP<?php /*echo data*/?></td> <td style=‘border:1px solid #000000;font-size:12px;‘> </td> </tr> <?php /*using in while*/ ?> </table> </body> </html>