在thinkphp中批量生成Word并压缩打包下载

    首先我们要清楚流程,第一步:生成相应的目录,(判断目录是否存在,不存在就创建),第二步:循环生成word文档,第三步:压缩成zip文件并下载
    然后我们再进行代码的实现:
    第一:我们要写两个函数,创建文件夹和删除文件夹
    //创建文件夹 的函数
    function makeDir($path) {
        if (empty ( $path )) {
            echo "路径不能为空";
        }
        $dirs = array ();
        $path = preg_replace ( '/(\/){2,}|{\\\}{1,}/', '/', $path );
        $dirs = explode ( "/", $path );
        $path = "";
        foreach ( $dirs as $folder ) {
            $path .= $folder . "/";
            if (! is_dir ( $path )) {
                mkdir ( $path, 0700 );
            }
        }
        if (is_dir ( $path )) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    //删除文件夹 的函数
    function rmdirs($dir) {
        $dir = realpath ( $dir );
        if ($dir == '' || $dir == '/' || (strlen ( $dir ) == 3 && substr ( $dir, 1 ) == '://')) {
            return false;
        }
        if (false !== ($dh = opendir ( $dir ))) {
            while ( false !== ($file = readdir ( $dh )) ) {
                if ($file == '.' || $file == '..') {
                    continue;
                }
                $path = $dir . DIRECTORY_SEPARATOR . $file;
                if (is_dir ( $path )) {
                    if (! rmdirs ( $path )) {
                        return false;
                    }
                } else {
                    unlink ( $path );
                }
            }
            closedir ( $dh );
            rmdir ( $dir );
            return true;
        } else {
            return false;
        }
    }
    第二:写出相应的代码
            $dir_teaname = './Public/Word/';  //要创建的文件夹名称   Word
        //判断目录是否存在,存在就删除
         if(is_dir($dir_teaname)){
             rmdirs($dir_teaname); //删除目录
         }
         //创建目录
         $mk = makeDir( $dir_teaname );
        if( !$mk )
        {
           echo "创建目录失败!";
        }
        //循环生成word
         foreach ($appraise_score as $key => $val)
         {
            //生成word文档
            import("@.ORG.Word");  //下面会给Word类的链接地址,下载不需要积分
            $savePath = $dir_teaname;
            $word = new word();
            $word->start();
           
            //thinkphp中的显示页面  也可以直接用   echo "这里是要生成的内容";
            $this->display();
           
            $wordname = time().$key.'.doc'; //生成的word名称
            $wordname=iconv("utf-8","gb2312",$wordname);  //编码转换
            $word->save($savePath.$wordname);      
         }
        import("@.ORG.PHPZip");  //下面会给PHPZip类的链接地址,下载不需要积分
        $archive  = new PHPZip();
         //压缩下载  不存储在指定目录   第一个参数:要压缩下载的文件夹    第二个参数:下载文件名
        $this_depart = '下载以后的压缩包名称';  //在下载时候以及下载成功的压缩包名称
        $archive->ZipAndDownload($dir_teaname,$this_depart);  
    ?>
    以上就是全部内容
   
    下面是Word类和PHPZip累的下载地址:
        PHPZip类,Word类:

广告一下:南京睿风网络 睿风博客  睿风电影

转载于:https://www.cnblogs.com/tsunlight/archive/2012/12/25/2832089.html

你可能感兴趣的:(php)