PHP把网页保存为word文件的三种方法

来源:脚本之家  责任编辑:小易  

ob_start(); header("Content-type:application/octet-stream"); header("Accept-Ranges:bytes"); header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=UserInfomation(目标文件名).doc"); //内

一、PHP生成word的两种思路或原理

关于word转为html格式解决如下: 打开word文档,单击菜单栏中的“文件”,找到“另存为” 或“另存为网页”; 单击另存为” 或“另存为网页”,弹出"另存为" 窗口; 在"另存为" 窗口的“保存类型”,下拉菜单中找到“网页”; 在“文件名”一栏中可以修改我们想

1.利用windows下面的 com组件

if rv is not None and rsv is not None: # extract version/subversion self._nmap_version_number = int(line[rv.start():rv.end()]) self._nmap_subversion_number = int(line[rsv.start()+1:rsv.end()]) break }

2.利用PHP将内容写入doc文件之中

楼上那个 太扯了吧.搞个后缀名,就完事了那岂不是太没技术含量了 给你写 3个函数start();定义要保存的数据开始 save();定义要保存的数据的结束,同时保存到word writeword()实现数据 二进制形式保存到word中 class word{ function start(){ ob_

具体实现方法如下。

传说中的phpword根本就不能读word文件,只能写,写完后可保存word,pdf.html等格式,网上一大把教程,都对读取避而不谈,都是一知半解粘贴过来骗积分的,就连官网上的手册也没有读的内容,想预览word,老老实实的在服务器上装插件吧。。。

二、利用windows下面的com组件

吴昕加入“快乐家族”已经有11年的时间,一路走来她经历了太多白眼,好在她足够努力,不急不躁地一步步变强大。近日,她跟潘玮柏录制综艺节目《我们相爱吧3》,剪短了头发,新造型干净利落,却被网友群嘲说“好丑”、“好难看”。如果是以前的小女生吴昕,只会默默忍受,独自伤心流泪。可是如今的她,已经敢于直面伤害,回击这些诋毁。她说:“挺好啊,我自己喜欢,剪完头发我都看到彩虹了,头发长短而已,小事小事,谢谢大家对我发型的关爱。”是啊,好看与否,如吴昕所说,自己喜欢就好,何须旁人指责那么多。出道多年,她终于学会直面诋毁,散发自己的光芒,做自己喜欢的事,做最自在的自己。吴昕出道多年,不算大火过,但是基本上全国上下

原理:com作为PHP的一个扩展类,安装过office的服务器会自动调用word.application的com,可以自动生成文档,PHP官方文档手册:http://www.php.net/manual/en/class.com.php

现在有越来越多的人群都很喜欢单身,有很多的女性因为某种原因单身了很久,如果女性长期单身是很容易出现一些心理问题的,下面我们就来看一下女性长期单身容易出现的心理问题,包括有哪一些。首先,如果单身过久,会发现所有的男人都有毛病。单身过久的一个不良影响就是会过分的挑剔,你会在每一个男人身上都能发现到缺点,而实际上你的大多数批评都是没有什么现实基础的,即便是品行兼优的男性身上你也能够吹毛求疵。1一些女性单身久了,会在异性面前羞怯不已。还有一些女性如果单身久了,总是会想太多。你生活在所有男人都爱你的一种虚妄想象当中。如果你单身久了,在你身边的人会认为你是同性恋,你从来不在男士身边逗留,也不表现出对于他们

使用官方实例:

应该是有喴,因为是从右往左念的,这是当时占领中国市场的四大瑞士表之一,今年刚好创立175周年。当时销售到中国的表主要是大八件,具有大三针设计,表壳多为白银制造,机芯有雕刻花纹的装饰。如果你说的是这类表,判断价格主要看表壳尺寸,一般分为五个尺寸,最大和最小为稀有,价格偏高,二号居多,一般尺寸在57毫米,三号也不大好找,但是价格不会高于二号。接下来要看品相,品相越好当然越贵,以二号为标准一般在8000元左右。另外一种则叫做银码表,具有猎表设计,就是表盘上有一个表盖,可以保护表盘。一般都是小秒针设计,机芯也较为简单,大夹板设计,属于后期的市场产品。这类产品无法与大八件相比,因为艺术工艺少了许多,但是

复制代码 代码如下:<?php

春光如昨,时光已过,人生苦短。回头望去,想想你是怎样面对自己和对待自己的生活。李银河在她的博客中说:只要做到两件事,人就可以很快乐。一个是身体的舒适,另一个是精神的愉悦。其概括十分恰当。向日葵不忧伤身体的不舒适和精神的不愉悦带来的结果就是,让我们体验到消极负面情绪,让你感觉整个人都不好了,很多时候我们就把这样的感受统称为痛苦。百度百科上解释说,痛苦是指心里感到难过和不愉快而表现出来的一种情绪状态。按照个人的理解,痛苦就是活着的人因为各种原因而产生的负面消极情绪体验。按照个人理解,我给痛苦这样分类:(你有没有想过分类)自私之痛自私之痛。为自己想的太多,为别人做的太少。将自己的心灵困在狭窄的自我世

// starting word

$word = new COM("word.application") or die("Unable to instantiate Word");

echo "Loaded Word, version {$word->Version}\n";

//bring it to front

$word->Visible = 1;

//open an empty document

$word->Documents->Add();

//do some weird stuff

$word->Selection->TypeText("This is a test...");

$word->Documents[1]->SaveAs("Useless test.doc");

//closing word

$word->Quit();

//free the object

$word = null;

?>

个人建议:com实例后的方法都需要查找官方文档才知道什么意思,编辑器没有代码提示,非常不方便,另外这个效率也不是很高,不推荐使用

三、利用PHP将内容写入doc文件之中

这个方法又可以分为两种方法

1.生成mht格式(和HTML很相似)写入word

2.纯HTML格式写入word

1)、生成mht格式(和HTML很相似)写入word

复制代码 代码如下:/**

 * 根据HTML代码获取word文档内容

 * 创建一个本质为mht的文档,该函数会分析文件内容并从远程下载页面中的图片资源

 * 该函数依赖于类MhtFileMaker

 * 该函数会分析img标签,提取src的属性值。但是,src的属性值必须被引号包围,否则不能提取

 *

 * @param string $content HTML内容

 * @param string $absolutePath 网页的绝对路径。如果HTML内容里的图片路径为相对路径,那么就需要填写这个参数,来让该函数自动填补成绝对路径。这个参数最后需要以/结束

 * @param bool $isEraseLink 是否去掉HTML内容中的链接

 */

function getWordDocument( $content , $absolutePath = "" , $isEraseLink = true )

{

    $mht = new MhtFileMaker();

    if ($isEraseLink)

        $content = preg_replace('/<a\s*.*?\s*>(\s*.*?\s*)<\/a>/i' , '$1' , $content);   //去掉链接

    $images = array();

    $files = array();

    $matches = array();

    //这个算法要求src后的属性值必须使用引号括起来

    if ( preg_match_all('/<img[.\n]*?src\s*?=\s*?[\"\'](.*?)[\"\'](.*?)\/>/i',$content ,$matches ) )

    {

        $arrPath = $matches[1];

        for ( $i=0;$i<count($arrPath);$i++)

        {

            $path = $arrPath[$i];

            $imgPath = trim( $path );

            if ( $imgPath != "" )

            {

                $files[] = $imgPath;

                if( substr($imgPath,0,7) == 'http://')

                {

                    //绝对链接,不加前缀

                }

                else

                {

                    $imgPath = $absolutePath.$imgPath;

                }

                $images[] = $imgPath;

            }

        }

    }

    $mht->AddContents("tmp.html",$mht->GetMimeType("tmp.html"),$content);

    for ( $i=0;$i<count($images);$i++)

    {

        $image = $images[$i];

        if ( @fopen($image , 'r') )

        {

            $imgcontent = @file_get_contents( $image );

            if ( $content )

                $mht->AddContents($files[$i],$mht->GetMimeType($image),$imgcontent);

        }

        else

        {

            echo "file:".$image." not exist!<br />";

        }

    }

    return $mht->GetFile();

}

这个函数的主要功能其实就是分析HTML代码中的所有图片地址,并且依次下载下来。获取到了图片的内容以后,调用MhtFileMaker类,将图片添加到mht文件中。具体的添加细节,封装在MhtFileMaker类中了。

使用方法1:远程调用

复制代码 代码如下:$url= http://www.***.com;

$content = file_get_contents($url);

$fileContent = getWordDocument($content,"http://www.yoursite.com/Music/etc/");

$fp = fopen("test.doc", 'w');

fwrite($fp, $fileContent);

fclose($fp);

其中,$content变量应该是HTML源代码,后面的链接应该是能填补HTML代码中图片相对路径的URL地址

其中,$content变量应该是HTML源代码,后面的链接应该是能填补HTML代码中图片相对路径的URL地址

使用方法2:本地生成调用

复制代码 代码如下:

header("Cache-Control: no-cache, must-revalidate");

header("Pragma: no-cache");

$wordStr = 'PHP教程网站--jb51.net';

$fileContent = getWordDocument($wordStr);

$fileName = iconv("utf-8", "GBK", ‘PHP教程' . '_'. $intro . '_' . rand(100, 999));  

header("Content-Type: application/doc");

header("Content-Disposition: attachment; filename=" . $fileName . ".doc");

echo $fileContent;

注意,在使用这个函数之前,您需要先包含类MhtFileMaker,这个类可以帮助我们生成Mht文档。

复制代码 代码如下:<?php

春光如昨,时光已过,人生苦短。回头望去,想想你是怎样面对自己和对待自己的生活。李银河在她的博客中说:只要做到两件事,人就可以很快乐。一个是身体的舒适,另一个是精神的愉悦。其概括十分恰当。向日葵不忧伤身体的不舒适和精神的不愉悦带来的结果就是,让我们体验到消极负面情绪,让你感觉整个人都不好了,很多时候我们就把这样的感受统称为痛苦。百度百科上解释说,痛苦是指心里感到难过和不愉快而表现出来的一种情绪状态。按照个人的理解,痛苦就是活着的人因为各种原因而产生的负面消极情绪体验。按照个人理解,我给痛苦这样分类:(你有没有想过分类)自私之痛自私之痛。为自己想的太多,为别人做的太少。将自己的心灵困在狭窄的自我世

/***********************************************************************

Class:        Mht File Maker

Version:      1.2 beta

Date:         02/11/2007

Author:       Wudi <wudicgi@yahoo.de>

Description:  The class can make .mht file.

***********************************************************************/

class MhtFileMaker{

    var $config = array();

    var $headers = array();

    var $headers_exists = array();

    var $files = array();

    var $boundary;

    var $dir_base;

    var $page_first;

    function MhtFile($config = array()){

    }

    function SetHeader($header){

        $this->headers[] = $header;

        $key = strtolower(substr($header, 0, strpos($header, ':')));

        $this->headers_exists[$key] = TRUE;

    }

    function SetFrom($from){

        $this->SetHeader("From: $from");

    }

    function SetSubject($subject){

        $this->SetHeader("Subject: $subject");

    }

    function SetDate($date = NULL, $istimestamp = FALSE){

        if ($date == NULL) {

            $date = time();

        }

        if ($istimestamp == TRUE) {

            $date = date('D, d M Y H:i:s O', $date);

        }

        $this->SetHeader("Date: $date");

    }

    function SetBoundary($boundary = NULL){

        if ($boundary == NULL) {

            $this->boundary = '--' . strtoupper(md5(mt_rand())) . '_MULTIPART_MIXED';

        } else {

            $this->boundary = $boundary;

        }

    }

    function SetBaseDir($dir){

        $this->dir_base = str_replace("\\", "/", realpath($dir));

    }

    function SetFirstPage($filename){

        $this->page_first = str_replace("\\", "/", realpath("{$this->dir_base}/$filename"));

    }

    function AutoAddFiles(){

        if (!isset($this->page_first)) {

            exit ('Not set the first page.');

        }

        $filepath = str_replace($this->dir_base, '', $this->page_first);

        $filepath = 'http://mhtfile' . $filepath;

        $this->AddFile($this->page_first, $filepath, NULL);

        $this->AddDir($this->dir_base);

    }

    function AddDir($dir){

        $handle_dir = opendir($dir);

        while ($filename = readdir($handle_dir)) {

            if (($filename!='.') && ($filename!='..') && ("$dir/$filename"!=$this->page_first)) {

                if (is_dir("$dir/$filename")) {

                    $this->AddDir("$dir/$filename");

                } elseif (is_file("$dir/$filename")) {

                    $filepath = str_replace($this->dir_base, '', "$dir/$filename");

                    $filepath = 'http://mhtfile' . $filepath;

                    $this->AddFile("$dir/$filename", $filepath, NULL);

                }

            }

        }

        closedir($handle_dir);

    }

    function AddFile($filename, $filepath = NULL, $encoding = NULL){

        if ($filepath == NULL) {

            $filepath = $filename;

        }

        $mimetype = $this->GetMimeType($filename);

        $filecont = file_get_contents($filename);

        $this->AddContents($filepath, $mimetype, $filecont, $encoding);

    }

    function AddContents($filepath, $mimetype, $filecont, $encoding = NULL){

        if ($encoding == NULL) {

            $filecont = chunk_split(base64_encode($filecont), 76);

            $encoding = 'base64';

        }

        $this->files[] = array('filepath' => $filepath,

                               'mimetype' => $mimetype,

                               'filecont' => $filecont,

                               'encoding' => $encoding);

    }

    function CheckHeaders(){

        if (!array_key_exists('date', $this->headers_exists)) {

            $this->SetDate(NULL, TRUE);

        }

        if ($this->boundary == NULL) {

            $this->SetBoundary();

        }

    }

    function CheckFiles(){

        if (count($this->files) == 0) {

            return FALSE;

        } else {

            return TRUE;

        }

    }

    function GetFile(){

        $this->CheckHeaders();

        if (!$this->CheckFiles()) {

            exit ('No file was added.');

        }

        $contents = implode("\r\n", $this->headers);

        $contents .= "\r\n";

        $contents .= "MIME-Version: 1.0\r\n";

        $contents .= "Content-Type: multipart/related;\r\n";

        $contents .= "\tboundary=\"{$this->boundary}\";\r\n";

        $contents .= "\ttype=\"" . $this->files[0]['mimetype'] . "\"\r\n";

        $contents .= "X-MimeOLE: Produced By Mht File Maker v1.0 beta\r\n";

        $contents .= "\r\n";

        $contents .= "This is a multi-part message in MIME format.\r\n";

        $contents .= "\r\n";

        foreach ($this->files as $file) {

            $contents .= "--{$this->boundary}\r\n";

            $contents .= "Content-Type: $file[mimetype]\r\n";

            $contents .= "Content-Transfer-Encoding: $file[encoding]\r\n";

            $contents .= "Content-Location: $file[filepath]\r\n";

            $contents .= "\r\n";

            $contents .= $file['filecont'];

            $contents .= "\r\n";

        }

        $contents .= "--{$this->boundary}--\r\n";

        return $contents;

    }

    function MakeFile($filename){

        $contents = $this->GetFile();

        $fp = fopen($filename, 'w');

        fwrite($fp, $contents);

        fclose($fp);

    }

    function GetMimeType($filename){

        $pathinfo = pathinfo($filename);

        switch ($pathinfo['extension']) {

            case 'htm': $mimetype = 'text/html'; break;

            case 'html': $mimetype = 'text/html'; break;

            case 'txt': $mimetype = 'text/plain'; break;

            case 'cgi': $mimetype = 'text/plain'; break;

            case 'php': $mimetype = 'text/plain'; break;

            case 'css': $mimetype = 'text/css'; break;

            case 'jpg': $mimetype = 'image/jpeg'; break;

            case 'jpeg': $mimetype = 'image/jpeg'; break;

            case 'jpe': $mimetype = 'image/jpeg'; break;

            case 'gif': $mimetype = 'image/gif'; break;

            case 'png': $mimetype = 'image/png'; break;

            default: $mimetype = 'application/octet-stream'; break;

        }

        return $mimetype;

    }

}

?>

点评:这种方法的缺点是不支持批量生成下载,因为一个页面只能有一个header,(无论远程使用还是本地生成声明header页面只能输出一个header),即使你循环生成,结果还是只有一个word生成(当然你可以修改上面的方式来实现)

2.纯HTML格式写入word

原理:

利用ob_start把html页面先存储起来(解决一下页面多个header问题,可以批量生成),然后在写入doc文档内容利用

代码:

复制代码 代码如下:<?php

春光如昨,时光已过,人生苦短。回头望去,想想你是怎样面对自己和对待自己的生活。李银河在她的博客中说:只要做到两件事,人就可以很快乐。一个是身体的舒适,另一个是精神的愉悦。其概括十分恰当。向日葵不忧伤身体的不舒适和精神的不愉悦带来的结果就是,让我们体验到消极负面情绪,让你感觉整个人都不好了,很多时候我们就把这样的感受统称为痛苦。百度百科上解释说,痛苦是指心里感到难过和不愉快而表现出来的一种情绪状态。按照个人的理解,痛苦就是活着的人因为各种原因而产生的负面消极情绪体验。按照个人理解,我给痛苦这样分类:(你有没有想过分类)自私之痛自私之痛。为自己想的太多,为别人做的太少。将自己的心灵困在狭窄的自我世

class word

{

    function start()

    {

        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">';

    }

    function save($path)

    {

        echo "</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);

    }

}

复制代码 代码如下:$html = '

<table width=600 cellpadding="6" cellspacing="1" bgcolor="#336699">

<tr bgcolor="White">

  <td>PHP10086</td>

  <td><a href="http://www.zgxue.com//www.zgxue.com" target="_blank" >//www.zgxue.com</a></td>

</tr>

<tr bgcolor="red">

  <td>PHP10086</td>

  <td><a href="http://www.zgxue.com//www.zgxue.com" target="_blank" >//www.zgxue.com</a></td>

</tr>

<tr bgcolor="White">

  <td colspan=2 >

  PHP10086<br>

  最靠谱的PHP技术分享网站

  <img src="http://picc.zgxue.com/https://www.zgxue.com/wp-content/themes/WPortal-Blue/images/logo.gif">

  </td>

</tr>

</table>

';

//批量生成

for($i=1;$i<=3;$i++){

    $word = new word();

    $word->start();

    //$html = "aaa".$i;

    $wordname = 'PHP教程网站--jb51.net'.$i.".doc";

    echo $html;

    $word->save($wordname);

    ob_flush();//每次执行前刷新缓存

    flush();

}

个人点评:这种方法效果最好,原因有三个:

第一代码比较简洁,很容易理解

第二是支持批量生成word(这个很重要)

第三是支持完整的html代码

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

如何将PHP网页导出为Word文件

ob_start();

header("Content-type:application/octet-stream");

header("Accept-Ranges:bytes");

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:attachment;filename=UserInfomation(目标文件名).doc");

//内容打印位置

print_r;

ob_end_flush();

php 生成的网页如何才能保存为word文档?

你把网页的图片地址,都写成绝对地址;例如 http://xxx/xxx.jpg这样保存到word中的时候,就能显示出来

而且你要保存为docx. -- 支持网页模式..

或者你直接用php 插件

phpword

http://phpword.codeplex.com/

直接生成word 文件

php写的网站,想要在实现可以在网页上修改word文档并且保存修改到服务器。

使用phpword这个插件,可以获取word的内容,然后读到html文件,你可以将内容放到编辑器里面,编辑完,再用php写入这个文件,最好做好文件锁处理追问具体实现?追答1,了解PHPword这个插件,查看相关的demo,熟悉如何集成,和使用流程

2,用一个比较好的富文本编辑器来读写内容

3,PHP是单线程的,独立处理一个文件的读写,需要用到文件锁

4,具体实现的代码还得靠自己

你知道如何将PHP网页上的数据导出到word文档里面么?

如果没有图片要导出的话,可以使用以下简单方式。

<?php

header("Content-type:application/vnd.ms-word");

header("Content-Disposition:filename=zgfun.doc");

echo "要导出的内容一。\r\n";

echo "要导出的第二行。";

?>

=============

如果要导出带图片的,则需要使用把网页保存为mht的格式下载。word可以直接打开。

如何使用php将html页面转为word文档

具体的需要将html页面转为word文档。尝试使用了设置Content-Type:application/msword的方法,可以保存。希望能帮到你,我还要抓紧时间自己在后盾人平台自己学习呢,一起希望加油吧≡ ∧_∧  ∧_∧

≡(#`Д´)⊃ ;;;)Д`)

≡/つ  /  ⊂ ⊂/

  • 本文相关:
  • php利用header函数实现文件下载时直接提示保存
  • php中文件读、写、删的操作(php中对文件和目录操作)
  • php中获取文件扩展名的n种方法小结
  • php 图片文件上传实现代码
  • php读取excel文件 php excelreader读取excel文件
  • php上传文件中文文件名乱码的解决方法
  • thinkphp模版中导入css和js文件的方法
  • php读取txt文件的内容并赋值给数组的代码
  • php+ffmpeg实现将视频自动转码成h264标准mp4文件
  • php移动文件指针ftell()、fseek()、rewind()函数总结
  • 与文件上传有关的php配置参数总结
  • php文件系统处理方法小结
  • php二维数组按某个键值排序的实例讲解
  • win平台安装配置nginx+php+mysql 环境
  • php两种快速排序算法实例
  • thinkphp实现的省市区三级联动功能示例
  • php远程采集图片详细教程
  • zend的mvc机制使用分析(二)
  • yii2.0实现创建简单widgets示例
  • centos7上编译安装php7以php-fpm方式连接apache
  • zf框架的数据库追踪器使用示例
  • php面向对象值单例模式
  • 如何将PHP网页导出为Word文件
  • php 生成的网页如何才能保存为word文档?
  • php写的网站,想要在实现可以在网页上修改word文档...
  • 你知道如何将PHP网页上的数据导出到word文档里面么?
  • 如何使用php将html页面转为word文档
  • 如何把php网页表单导出成word文档???
  • 怎么使用 phpword 把 word文档转为html格式
  • php中如何把html中的内容生成到word文档
  • 求教“php怎么把html页面导入到word”
  • 怎样用PHP读取一个word文档内容并在浏览器中显示出...
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved