首页 > 代码库 > php读取excel,以及php打包文件夹为zip文件

php读取excel,以及php打包文件夹为zip文件

1.把文件下载到本地,放在在Apache环境下
2.d.xlsx是某游戏的服务器名和玩家列表,本程序只适合此种xlsx文件结构,其他结构请修改index.php源码
3.访问zip.php的功能是把生成的files文件夹打包成files.zip
4.访问index.php即可生成files文件夹,里面0.js---n.js 分别存放各个服务器人名,server_name_list.js存放服务器列表。
5.Classes 存放的是php读取excel的功能模块,具体任务逻辑都在index.php

A.PHP读取excel支持excel2007

demo逻辑代码:其中的(arrayRecursive,JSON方法是json数据处理功能,可兼容汉字)
主要借助了:PHPExcel插件,附件中有Classes文件夹,官网:http://www.codeplex.com/PHPExcel
index.php
<?php /** Error reporting */error_reporting(0);header("Content-type: text/html; charset=utf-8"); ?><!doctype html><html><head><meta charset="utf-8"><title>标题</title></head><body>    <?php     /**************************************************************     *     *  使用特定function对数组中所有元素做处理     *  @param  string  &$array     要处理的字符串     *  @param  string  $function   要执行的函数     *  @return boolean $apply_to_keys_also     是否也应用到key上     *  @access public     *     *************************************************************/    function arrayRecursive(&$array, $function, $apply_to_keys_also = false)    {        static $recursive_counter = 0;        if (++$recursive_counter > 1000) {            die(‘possible deep recursion attack‘);        }        foreach ($array as $key => $value) {            if (is_array($value)) {                arrayRecursive($array[$key], $function, $apply_to_keys_also);            } else {                $array[$key] = $function($value);            }                 if ($apply_to_keys_also && is_string($key)) {                $new_key = $function($key);                if ($new_key != $key) {                    $array[$new_key] = $array[$key];                    unset($array[$key]);                }            }        }        $recursive_counter--;    }         /**************************************************************     *     *  将数组转换为JSON字符串(兼容中文)     *  @param  array   $array      要转换的数组     *  @return string      转换得到的json字符串     *  @access public     *     *************************************************************/    function JSON($array) {        arrayRecursive($array, ‘urlencode‘, true);        $json = json_encode($array);        return urldecode($json);    }    require_once ‘Classes\PHPExcel.php‘;      require_once ‘Classes\PHPExcel\IOFactory.php‘;      require_once ‘Classes\PHPExcel\Reader\Excel2007.php‘;      $uploadfile=‘d.xlsx‘;            $objReader = PHPExcel_IOFactory::createReader(‘Excel2007‘);/*Excel5 for 2003 excel2007 for 2007*/     $objPHPExcel = PHPExcel_IOFactory::load($uploadfile);    $sheet = $objPHPExcel->getSheet(0);      $highestRow = $sheet->getHighestRow(); // 取得总行数      $highestColumn = $sheet->getHighestColumn(); // 取得总列数      /*方法【推荐】*/      $objWorksheet = $objPHPExcel->getActiveSheet();              $highestRow = $objWorksheet->getHighestRow();   // 取得总行数           $highestColumn = $objWorksheet->getHighestColumn();              $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数      $list = array();    for ($row = 1;$row <= $highestRow;$row++)         {          $strs=array();          //注意highestColumnIndex的列数索引从0开始          for ($col = 0;$col < $highestColumnIndex;$col++)            {              $strs[$col] =$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();          }          array_push($list, $strs);      }    //读取完毕 $list    //处理数据,生成新的结构    $n = 0;    $ser = array();    for($i = 0 ; $i < count($list); $i++ ){        $ser[$n][0] = $list[$i][0];         if(!is_array(@$ser[$n][1])){            $ser[$n][1] = array();        }         array_push($ser[$n][1], $list[$i][1]);        if($i != count($list) -1){          if($list[$i][0] != $list[$i+1][0]){                $n++;            }         }     }    /*输出文件*/    $sname = array();    $f = ‘files/‘;//存放目录    if (! file_exists ( $f )) {        mkdir ( $f );    }    for($j = 0;$j < count($ser); $j++){        $file = $f.$j.‘.js‘;        echo $file."<br />";        $fp=fopen("$file", "w+"); //打开文件指针,创建文件        if ( !is_writable($file) ){              die("文件:" .$file. "不可写,请检查!");        }        if (is_writable($file) == false) {                die(‘我是鸡毛,我不能‘);        }        $data = $ser[$j][1];        array_push($sname, $ser[$j][0]);        file_put_contents ($file, JSON($data));        fclose($fp);  //关闭指针    }        $file = $f.‘server_name_list.js‘;        echo $file."<br />";;        $fp=fopen("$file", "w+"); //打开文件指针,创建文件        if ( !is_writable($file) ){              die("文件:" .$file. "不可写,请检查!");        }        if (is_writable($file) == false) {                die(‘我是鸡毛,我不能‘);        }        file_put_contents ($file, JSON($sname));        echo "生成完毕!";        echo ‘<a href="http://www.mamicode.com/zip.php">打包生成文件</a>‘    ?></body></html>          

B.PHP打包文件夹为zip文件

zip.php

<?php /** Error reporting */error_reporting(0);header("Content-type: text/html; charset=utf-8"); ?><!doctype html><html><head><meta charset="utf-8"><title>标题</title></head><body><?php    function addFileToZip($path,$zip){    $handler=opendir($path); //打开当前文件夹由$path指定。    while(($filename=readdir($handler))!==false){        if($filename != "." && $filename != ".."){//文件夹文件名字为‘.‘和‘..’,不要对他们进行操作            if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归                addFileToZip($path."/".$filename, $zip);            }else{ //将文件加入zip对象                $zip->addFile($path."/".$filename);            }        }    }    @closedir($path);}$zip=new ZipArchive();if($zip->open(‘files.zip‘, ZipArchive::OVERWRITE)=== TRUE){    addFileToZip(‘files‘, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法    $zip->close(); //关闭处理的zip文件}echo ‘打包完毕!‘."<br />";echo "<a href=http://www.mamicode.com/‘files.zip‘>下载files.zip"?></body></html> 

 

代码下载:php-read-excel

http://files.cnblogs.com/zhidong123/php-read-excel.zip