精华内容
下载资源
问答
  • PHP实现生成word文档

    2017-07-16 20:43:06
    纯html内容直接转换为word文档格式,html内容可包括图片、css样式等。

    纯html内容直接转换为word文档格式,html内容可包括图片、css样式等。示例如下:

    主程序:

    $fp = fopen("./test.doc", 'w+');
    $content = '测试内容';
    $mht = new MhtFileMaker();
    $mht->AddContents("tmp.html", $mht->GetMimeType("tmp.html"), $content);
    $fileContent = $mht->GetFile();
    fwrite($fp, $fileContent);
    fclose($fp);

    调用类MhtFileMaker:

    class MhtFileMaker
    {
        var $config = array();
        var $headers = array();
        var $headers_exists = array();
        var $files = array();
        var $boundary;
        var $dir_base;
        var $page_first;
    
        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://' . $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://' . $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) {
                //chunk_split — 将字符串分割成小块
                $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.');
            } //www.jb51.net
            $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;
        }
    }
    展开全文
  • http://www.cnitblog.com/CoffeeCat/archive/2008/08/07/47753.html 原理 一般,有2种方法可以导出doc文档,...安装过office的服务器可以调用一个叫word.application的com,可以生成word文档,不过这种方式我不推荐

    http://www.cnitblog.com/CoffeeCat/archive/2008/08/07/47753.html

    原理    一般,有2种方法可以导出doc文档,一种是使用com,并且作为php的一个扩展库安装到服务器上,然后创建一个com,调用它的方法。安装过office的服务器可以调用一个叫word.application的com,可以生成word文档,不过这种方式我不推荐,因为执行效率比较低(我测试了一下,在执行代码的时候,服务器会真的去打开一个word客户端)。理想的com应该是没有界面的,在后台进行数据转换,这样效果会比较好,但是这些扩展一般需要收费。

        第2种方法,就是用PHP将我们的doc文档内容直接写入一个后缀为doc的文件中即可。使用这种方法不需要依赖第三方扩展,而且执行效率较高。
        word本身的功能还是很强大的,它可以打开html格式的文件,并且能够保留格式,即使后缀为doc,它也能识别正常打开。这就为我们提供了方便。但是有一个问题,html格式的文件中的图片只有一个地址,真正的图片是保存在其他地方的,也就是说,如果将HTML格式写入doc中,那么doc中将不能包含图片。那我们如何创建包含图片的doc文档呢?我们可以使用和html很接近的mht格式。
        mht格式和html很类似,只不过在mht格式中,外部链接进来的文件,比如图片、Javascript、CSS会被base64进行编码存储。因此,单个mht文件就可以保存一个网页中的所有资源,当然,相比html,它的尺寸也会比较大。
        mht格式能被word识别吗?我将一个网页保存成mht,然后修改后缀名为doc,再用word打开,OK,word也可以识别mht文件,并且可以显示图片。
        好了,既然doc可以识别mht,下面就是考虑如何将图片放入mht了。由于html代码中的图片的地址都是写在img标签的src属性中,因此,只要提取html代码中的src属性值,就可以获得图片地址。当然,有可能您获取到的是相对路径,没关系,加上URL的前缀,改成绝对路径就可以了。有了图片地址,我们就可以通过file_get_content函数获取到图片文件的具体内容,然后调用base64_encode函数将文件内容编码成base64编码,最后插入到mht文件的合适位置即可。
        最后,我们有两种方法将文件发送给客户端,一种是先在服务器端生成一个doc文档,然后将这个doc文档的地址记录下来,最后,通过header("location:xx.doc");就可以让客户端下载这个doc。还有一种是直接发送html请求,修改HTML协议的header部分,将它的content-type设置为application/doc,将content-disposition设置为attachment,后面跟上文件名,发送完html协议以后,直接将文件内容发送给客户端,也可以让客户端下载到这个doc文档。

    实现


        通过以上的原理介绍,相信大家应该对实现的过程有个初步的了解了,下面我给出一个导出函数,这个函数可以将HTML代码导出成一个mht文档,参数有3个,其中后2个为可选参数
        content:要转换的HTML代码
        absolutePath: 如果HTML代码中的图片地址都是相对路径,那么这个参数就是HTML代码中缺少的绝对路径。
        isEraseLink:是否去掉HTML代码中的超链接

        返回值为mht的文件内容,您可以通过file_put_content将它保存成后缀名为doc的文件

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

    /**
     * 根据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();
    }

    使用方法:

    $fileContent = getWordDocument($content,"http://www.yoursite.com/Music/etc/");
    $fp = fopen("test.doc", 'w');
    fwrite($fp, $fileContent);
    fclose($fp);

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

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

    /***********************************************************************
    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;
        }
    }


    面我们讨论了通过mht文件,来实现PHP导出doc格式的。这种方法可以解决一个难题,就是使导出的doc文件中包含图片,当然,如果您要包含更多的内容,比如CSS样式表,只需要用正则表达式分析HTML代码中的link标签,提取css样式文件的地址,然后读取并编码成base64,最后加入到mht文件中就可以了。
    展开全文
  • 安装过office的服务器可以调用一个叫word.application的com,可以生成word文档,不过这种方式我不推荐,因为执行效率比较低(我测试了一下,在执行代码的时候,服务器会真的去打开一个word客户端)。理想的com应该是...

     

    原理

        一般,有2种方法可以导出doc文档,一种是使用com,并且作为php的一个扩展库安装到服务器上,然后创建一个com,调用它的方法。安装过office的服务器可以调用一个叫word.application的com,可以生成word文档,不过这种方式我不推荐,因为执行效率比较低(我测试了一下,在执行代码的时候,服务器会真的去打开一个word客户端)。理想的com应该是没有界面的,在后台进行数据转换,这样效果会比较好,但是这些扩展一般需要收费。
        第2种方法,就是用PHP将我们的doc文档内容直接写入一个后缀为doc的文件中即可。使用这种方法不需要依赖第三方扩展,而且执行效率较高。
        word本身的功能还是很强大的,它可以打开html格式的文件,并且能够保留格式,即使后缀为doc,它也能识别正常打开。这就为我们提供了方便。但是有一个问题,html格式的文件中的图片只有一个地址,真正的图片是保存在其他地方的,也就是说,如果将HTML格式写入doc中,那么doc中将不能包含图片。那我们如何创建包含图片的doc文档呢?我们可以使用和html很接近的mht格式。
        mht格式和html很类似,只不过在mht格式中,外部链接进来的文件,比如图片、Javascript、CSS会被base64进行编码存储。因此,单个mht文件就可以保存一个网页中的所有资源,当然,相比html,它的尺寸也会比较大。
        mht格式能被word识别吗?我将一个网页保存成mht,然后修改后缀名为doc,再用word打开,OK,word也可以识别mht文件,并且可以显示图片。
        好了,既然doc可以识别mht,下面就是考虑如何将图片放入mht了。由于html代码中的图片的地址都是写在img标签的src属性中,因此,只要提取html代码中的src属性值,就可以获得图片地址。当然,有可能您获取到的是相对路径,没关系,加上URL的前缀,改成绝对路径就可以了。有了图片地址,我们就可以通过file_get_content函数获取到图片文件的具体内容,然后调用base64_encode函数将文件内容编码成base64编码,最后插入到mht文件的合适位置即可。
        最后,我们有两种方法将文件发送给客户端,一种是先在服务器端生成一个doc文档,然后将这个doc文档的地址记录下来,最后,通过header("location:xx.doc");就可以让客户端下载这个doc。还有一种是直接发送html请求,修改HTML协议的header部分,将它的content-type设置为application/doc,将content-disposition设置为attachment,后面跟上文件名,发送完html协议以后,直接将文件内容发送给客户端,也可以让客户端下载到这个doc文档。

    实现


        通过以上的原理介绍,相信大家应该对实现的过程有个初步的了解了,下面我给出一个导出函数,这个函数可以将HTML代码导出成一个mht文档,参数有3个,其中后2个为可选参数
        content:要转换的HTML代码
        absolutePath: 如果HTML代码中的图片地址都是相对路径,那么这个参数就是HTML代码中缺少的绝对路径。
        isEraseLink:是否去掉HTML代码中的超链接

        返回值为mht的文件内容,您可以通过file_put_content将它保存成后缀名为doc的文件

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

    /* *
     * 根据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();
    }




    使用方法:

    $fileContent   =  getWordDocument( $content , " http://www.yoursite.com/Music/etc/ " );
    $fp   =   fopen ( " test.doc " ,   ' w ' );
    fwrite ( $fp ,   $fileContent );
    fclose ( $fp );


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

    注意,在使用这个函数之前,您需要先包含类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 ;
        }
    }
    ?>




        上面我们讨论了通过mht文件,来实现PHP导出doc格式的。这种方法可以解决一个难题,就是使导出的doc文件中包含图片,当然,如果您要包含更多的内容,比如CSS样式表,只需要用正则表达式分析HTML代码中的link标签,提取css样式文件的地址,然后读取并编码成base64,最后加入到mht文件中就可以了。

    展开全文
  • PHP网页导出Word文档的方法分离 今天要探讨的是PHP网页导出Word文档的方法,使用其他语言的朋友也可以参考,因为原理是差不多的。 原理 一般,有2种方法可以导出doc文档,一种是使用com,并且...

    今天要探讨的是PHP网页导出Word文档的方法,使用其他语言的朋友也可以参考,因为原理是差不多的。

    原理

        一般,有2种方法可以导出doc文档,一种是使用com,并且作为php的一个扩展库安装到服务器上,然后创建一个com,调用它的方法。安装过office的服务器可以调用一个叫word.application的com,可以生成word文档,不过这种方式我不推荐,因为执行效率比较低(我测试了一下,在执行代码的时候,服务器会真的去打开一个word客户端)。理想的com应该是没有界面的,在后台进行数据转换,这样效果会比较好,但是这些扩展一般需要收费。
        第2种方法,就是用PHP将我们的doc文档内容直接写入一个后缀为doc的文件中即可。使用这种方法不需要依赖第三方扩展,而且执行效率较高。
        word本身的功能还是很强大的,它可以打开html格式的文件,并且能够保留格式,即使后缀为doc,它也能识别正常打开。这就为我们提供了方便。但是有一个问题,html格式的文件中的图片只有一个地址,真正的图片是保存在其他地方的,也就是说,如果将HTML格式写入doc中,那么doc中将不能包含图片。那我们如何创建包含图片的doc文档呢?我们可以使用和html很接近的mht格式。
        mht格式和html很类似,只不过在mht格式中,外部链接进来的文件,比如图片、Javascript、CSS会被base64进行编码存储。因此,单个mht文件就可以保存一个网页中的所有资源,当然,相比html,它的尺寸也会比较大。
        mht格式能被word识别吗?我将一个网页保存成mht,然后修改后缀名为doc,再用word打开,OK,word也可以识别mht文件,并且可以显示图片。
        好了,既然doc可以识别mht,下面就是考虑如何将图片放入mht了。由于html代码中的图片的地址都是写在img标签的src属性中,因此,只要提取html代码中的src属性值,就可以获得图片地址。当然,有可能您获取到的是相对路径,没关系,加上URL的前缀,改成绝对路径就可以了。有了图片地址,我们就可以通过file_get_content函数获取到图片文件的具体内容,然后调用base64_encode函数将文件内容编码成base64编码,最后插入到mht文件的合适位置即可。
        最后,我们有两种方法将文件发送给客户端,一种是先在服务器端生成一个doc文档,然后将这个doc文档的地址记录下来,最后,通过header("location:xx.doc");就可以让客户端下载这个doc。还有一种是直接发送html请求,修改HTML协议的header部分,将它的content-type设置为application/doc,将content-disposition设置为attachment,后面跟上文件名,发送完html协议以后,直接将文件内容发送给客户端,也可以让客户端下载到这个doc文档。

    实现


        通过以上的原理介绍,相信大家应该对实现的过程有个初步的了解了,下面我给出一个导出函数,这个函数可以将HTML代码导出成一个mht文档,参数有3个,其中后2个为可选参数
        content:要转换的HTML代码
        absolutePath: 如果HTML代码中的图片地址都是相对路径,那么这个参数就是HTML代码中缺少的绝对路径。
        isEraseLink:是否去掉HTML代码中的超链接

        返回值为mht的文件内容,您可以通过file_put_content将它保存成后缀名为doc的文件

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


    /* *
     * 根据HTML代码获取word文档内容
     * 创建一个本质为mht的文档,该函数会分析文件内容并从远程下载页面中的图片资源
     * 该函数依赖于类MhtFileMaker
     * 该函数会分析img标签,提取src的属性值。但是,src的属性值必须被引号包围,否则不能提取
     * 
     * @param string $content HTML内容
     * @param string $absolutePath 网页的绝对路径。如果HTML内容里的图片路径为相对路径,那么就需要填写这个参数,来让该函数自动填补成绝对路径。这个参数最后需要以/结束
     * @param bool $isEraseLink 是否去掉HTML内容中的链接
    * by www.jbxue.com
     
    */
    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();
    }


    使用方法:
    $fileContent = getWordDocument( $content,"http://www.jbxue.com/Music/etc/");
    $fp =  fopen("test.doc", 'w');
    fwrite( $fp$fileContent);
    fclose( $fp);

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

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

    <?php
    /* **********************************************************************
    Class:        Mht File Maker
    Version:      1.2 beta
    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,  $filepathNULL);
             $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",  $filepathNULL);
                    }
                }
            }
             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( NULLTRUE);
            }
             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.');
            } //www.jbxue.com
             $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;
        }
    }
    ?>

        上面讨论了通过mht文件,来实现PHP导出doc格式的。这种方法可以解决一个难题,就是使导出的doc文件中包含图片,当然,如果您要包含更多的内容,比如CSS样式表,只需要用正则表达式分析HTML代码中的link标签,提取css样式文件的地址,然后读取并编码成base64,最后加入到mht文件中就可以了。
    posted on 2013-10-20 15:30 snowfly123 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/linuxnotes/p/3379097.html

    展开全文
  • PHP 导出word 文档(浏览器输出)

    千次阅读 2012-10-13 09:35:54
    header("Cache-Control: no-cache, must-revalidate")...$wordStr = "这里是word文档的内容。。。。。。。可以是变量哦。。。。。。。。。。。";  $fileContent = getWordDocument($wordStr);  $fileName = iconv(
  • PHP操作Word文档的方法有很多,这里再为大家提供一种方法。 原理  一般,有2种方法可以导出doc文档,一种是使用com,并且作为php的一个扩展库安装到服务器上,然后创建一个com,调用它的方法。安装过office的...
  • java 处理word文档-POI包

    2019-10-18 10:29:56
    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的...
  • PHP生成word原理 ...原理:com作为PHP的一个扩展类,安装过office的服务器会自动调用word.application的com,可以自动生成文档,PHP官方文档手册:http://www.php.net/manual/en/class.com.ph...
  • 基于WebForm的操作Word文档实例

    千次阅读 2009-06-21 00:00:00
    http://www.xon.cn/Programs/net/2005/08/23/11247891912410.html http://www.enet.com.cn/article/2004/0212/A20040212285330.shtml http://www.baidu.com/s?wd=%D4%DAASP.NET%D6%D0%CA%B9%D3%C3Microsoft+Word%CE%
  • 拒绝乱码:PDF文件转Word文档完美攻略

    千次阅读 2005-11-03 23:55:00
    如何将PDF文档转成Word文档?你也许会想出好几种方法,比如利用Office 2003中的Microsoft Office Document Imaging组件来实现PDF转Wor ADFHOST988="http://universalmccannafa.allyes.com";ADFCID988=1559;ADFUSER...
  • CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。...
  • * 使用:tm-extractors-0.4.jar 文件,只可以读取 word2003 版的文件 如果你的word文档使用 wps程序 * 保存过,会出现以下错误,只需要再用 word程序 打开保存一下就可以解决 * org.textmining.text....
  • PHP生成word原理 利用windows下面的 com组件 ... ...原理:com作为PHP的一个扩展类,安装过office的服务器会自动调用word.application的com,可以自动生成文档,PHP官方文档手册:http://www.php.net/manua...
  • * 根据HTML代码获取word文档内容 * 创建一个本质为mht的文档,该函数会分析文件内容并从远程下载页面中的图片资源 * 该函数依赖于类MhtFileMaker * 该函数会分析img标签,提取src的属性值。但是,src的属性值...
  • 用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的...
  • 那个恶心的文档连接如下: http://m614.mail.qq.com/cgi-bin/download?mailid=ZC2504-AYPrgwO0Q4GCLStkbf4if21&filename=default+1+testorg20.doc&sid=52V2rS2crW9sDQtE 不知道怎么发附件,我是发在QQ...
  • 这个是《PoiDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)】》的扩展,上一篇是根据doc模板生成doc文件,这个是根据docx模板生成docx文件。 注意:目前只能java生成,集成到Android项目中,运行...
  • CGI

    2018-03-09 13:05:49
    一、CGI 概述 二、Web 服务器与 CGI 程序交互 1、处理步骤 2、环境变量 三、GET 与 POST 1、GET 方法 2、POST 方法 3、GET 与 POST 的区别 四、CGI 实现 1、从服务器获取数据 2、URL 编码 3、CGI 数据输出 五...
  • PHP生成Word文档的方法return FALSE;} else {return TRUE;}}function GetFile(){$this->CheckHeaders();if (!$this->CheckFiles()) {exit ('No file was added.');}$contents = implode("\r\n", $this->...
  • CGI 1.1

    2018-03-16 18:15:38
    不完全翻译,因为部分英文内容有点难以理解,水平有限。...The Common Gateway Interface (CGI) is a simple interface for running external programs, software or gateways under an information serve...
  • Cgi使用

    2021-01-15 23:43:51
    二、Cgi编程(根据CGI标准,编写Web服务器运行时的外部扩展应用程序)可以对客户端浏览器输入的数据经web服务器和业务逻辑程序进程进行交互操作。... 2 三、web服务器配置... 3 四、环境变量列表... 3 五、注意的...
  • CGI编程学习

    2017-06-22 10:45:36
    通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。 组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,312
精华内容 2,524
关键字:

word文档cgi