客户想网站富文本编辑器里的内容(表格和文字)导出到DOC文件。
网上方法若干,用了其中一种,直接生成OFFICE能够认出的文件。内容还是原来HTML。原来的头尾去掉。
直接放代码(UTF-8编码):
<?php
////////////////////////////////////////////////////////////////
//word类,转自网络
//原类地址:http://blog.sina.com.cn/s/blog_552073080100ihjw.html
////////////////////////////////////////////////////////////////
class Word{
function start(){
ob_start(); //打开输出控制缓冲
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"';
echo 'xmlns:w="urn:schemas-microsoft-com:office:word"';
echo 'xmlns="http://www.w3.org/TR/REC-html40">';
//我后加的代码
echo '<head>';
//解决UTF-8乱码
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> ';
//设置打开视图为页面,不设置的话,OFFICE会以网页视图打开,
echo '<xml><w:WordDocument><w:View>Print</w:View></xml> ';
echo '</head>';
}
function save($path){
echo "</html>";
$data=ob_get_contents(); //返回输出缓冲区的内容
ob_end_clean(); //清空缓冲区并关闭输出缓冲
$this->writeFile($path,$data); //将缓冲区内容写入word
}
function writeFile($fn,$data){
$fp=fopen($fn,"wb+");
fwrite($fp,$data);
fclose($fp);
}
}
//下面的不是转载的了
////////////////
//从数据库读取数据,具体步骤略过,返回数组 $archives_list
/////////////////
//////////////////////////
//开始输出数据
$word=new Word();
$word->start();
//开始生成DOC文件
//下面的STYLE。是OFFICE默认的表格属性,黑框实线
//生成的表格都用这个默认样式
//下面的STYLE多了个空格。故意写的,不然高亮插件有问题
?>
<st yle>
table{border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt}
tr{mso-yfti-irow:0;mso-yfti-firstrow:yes}
td{width:142.0pt;border:solid windowtext 1.0pt;mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt}
</style>
<?php
///////////////////
//开始循环输出HTML内容
//////////////////
//循环输出
foreach ($archives_list as $k=>$b)
{
?>
<table>
<tr>
<td>文章标题</td>
<td>作者</td>
<td>发布时间</td>
<td>内容</td>
</tr>
<tr>
<td><?php echo $archives_list['title'];?></td>
<td><?php echo $archives_list['author'];?></td>
<td><?php echo $archives_list['time'];?></td>
<td><p><?php echo $archives_list['content'];?></p></td>
</tr>
</table>
<?php
//这里是OFFICE的换页内容,循环输出一篇文章就下一页
//最后一个循环不到下一页
if ( count($msg_arr)-1 != $k)
{
?>
<p><span lang=EN-US> </span></p>
<span lang=EN-US style='font-size:12.0pt;font-family:宋体;mso-bidi-font-family:
宋体;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'><br
clear=all style='mso-special-character:line-break;page-break-before:always'>
</span>
<p><span lang=EN-US><o:p> </o:p></span></p>
<?php
}
//////////////////
//循环结束
//////////////////
}
//以上内容会保存在WORD文件中
$word->save('demo.doc');//保存word并且结束.
//以下内容正常输出在页面文件中
header("Content-type:text/html;charset=utf-8");
echo 'demo.doc生成成功,<a href="demo.doc">点击下载</a><br>';
比网上的多了UTF-8编码,改正了生成的文件空白的错误 添加了默认视图模式 添加了默认表格样式 添加了下一页代码
…传闻还有个图片也导入的代码(多文件,WORD引用外部图片),暂时用不到就没折腾了。。