php在程序中将网页生成word文档并提供下载的代码


Posted in PHP onOctober 09, 2012

在这篇文章中主要解决两个问题:

1:在php中如何把html中的内容生成到word文档中
2:php把html中的内容生成到word文档中时,不居中显示问题,即会默认按照web视图进行显示。
3:php把html中的内容生成到word文档中时,相关样式不兼容问题

正文:

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"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<xml><w:WordDocument><w:View>Print</w:View></xml> 
<script src="includes/js/ztree/js/jquery-1.4.4.min.js" type="text/javascript"></script> 
</head>'; 
echo '<body><table class="table_dayin"> 
<caption class="table_caption">'; 
echo "数字化教学系统电子备课稿<br> 
<span>学科 <em style="border-bottom: 1px solid #545454;">语文</em>学校 <em style="border-bottom: 1px solid #545454;">实验中学</em></span> 
</caption>"; 
echo '</table></body></html>'; 
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=test.doc'); 
}else if (strpos($_SERVER["HTTP_USER_AGENT"],'Firefox')) { 
Header('Content-Disposition: attachment; filename=test.doc'); 
} else { 
header('Content-Disposition: attachment; filename=test.doc'); 
} 
header("Pragma:no-cache"); 
header("Expires:0"); 
ob_end_flush();//输出全部内容到浏览器

注:以上代码部分提供了在php程序文件中生成内容到word文档中并提供下载功能。
针对第2个问题,下载到本地的word文档打开后显示默认按照web视图进行显示的问题:如下图:
按照默认web视图显示:

 php在程序中将网页生成word文档并提供下载的代码

如果按照正常的页面视图进行显示的话,需要在头部添加一行xml标示进行设置(蓝色代码部分):<xml><w:WordDocument><w:View>Print</w:View></xml>,添加后下载到本地的word文档打开后显示如下图:

 php在程序中将网页生成word文档并提供下载的代码

针对第三个问题就是有一些样式不兼容问题,比如顶部的大标题下面的相关属性的下划线标注显示:

  我们在html中的样式中添加了border-bottom: 1px solid #545454;这个样式(蓝色代码部分),即:<em style="border-bottom: 1px solid #545454;">,但是下划线还是没有显示,因为在word中不识别。如下图:

 php在程序中将网页生成word文档并提供下载的代码

解决方法就是按照word识别的下标样式进行更改,即:<em style="text-decoration: underline;">,更改为这个样式后,即在下载到本地的word文档打开后就有下划线标示显示了。

 php在程序中将网页生成word文档并提供下载的代码

授之于鱼,不如授之于渔,我把我的关于这个解决样式不兼容的解决方法给大家分享一下:

   一:找个web版在线编辑器,然后在里面随便输入几个文字,然后添加下划线标示

   二:然后点击编辑器上面的查看源代码按钮,可以看到刚才添加的那个下划线标示的属性即为text-decoration: underline;而不是html中的样式标示:border-bottom: 1px solid #545454;

   好了,针对以上相关问题就到这里,如有问题请大家提出来,我们共同讨论解决哈。

PHP 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
php实现的CSS更新类实例
Sep 22 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 #PHP
php全排列递归算法代码
Oct 09 #PHP
php列出一个目录下的所有文件的代码
Oct 09 #PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 #PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 #PHP
php随机输出名人名言的代码
Oct 07 #PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 #PHP
You might like
Yii框架的布局文件实例分析
2019/09/04 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
JS 表单验证大全
2011/11/23 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
详解jQuery中的事件
2016/12/14 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
详解Vue中组件的缓存
2019/04/20 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
Python实现批量读取word中表格信息的方法
2015/07/30 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
个人查摆剖析材料
2014/10/04 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
高三物理教学反思
2016/02/20 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
MySQL中in和exists区别详解
2021/06/03 MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
MySQL创建管理HASH分区
2022/04/13 MySQL