PHP实现CSV文件的导入和导出类

本文实例讲述了PHP实现CSV文件导入导出类。分享给大家供大家参考。具体如下:

  <?php  /**   * CSV 文件处理类   */  class Csv{    public $csv_array; //csv数组数据    public $csv_str; //csv文件数据    public function __construct($param_arr, $column){      $this->csv_array = $param_arr;      $this->path = $path;      $this->column = $column;    }    /**     * 导出     * */    public function export(){      if(empty($this->csv_array) || empty($this->column)){        return false;      }      $param_arr = $this->csv_array;      unset($this->csv_array);      $export_str = implode(',',$param_arr['nav'])."n";      unset($param_arr['nav']);      //组装数据      foreach($param_arr as $k=>$v){        foreach($v as $k1=>$v1){          $export_str .= implode(',',$v1)."n";        }      }      //将$export_str导出      header( "Cache-Control: public" );      header( "Pragma: public" );      header("Content-type:application/vnd.ms-excel");      header("Content-Disposition:attachment;filename=txxx.csv");      header('Content-Type:APPLICATION/OCTET-STREAM');      ob_start();        // $file_str= iconv("utf-8",'gbk',$export_str);      ob_end_clean();      echo $export_str;    }    /**     * 导入     * */    public function import($path,$column = 3){      $flag = flase;      $code = 0;      $msg = '未处理';      $filesize = 1; //1MB      $maxsize = $filesize * 1024 * 1024;      $max_column = 1000;         //检测文件是否存在      if($flag === flase){        if(!file_exists($path)){          $msg = '文件不存在';          $flag = true;        }      }      //检测文件格式      if($flag === flase){        $ext = preg_replace("/.*.([^.]+)/","$1",$path);        if($ext != 'csv'){          $msg = '只能导入CSV格式文件';          $flag = true;        }      }      //检测文件大小      if($flag === flase){        if(filesize($path)>$maxsize){          $msg = '导入的文件不得超过'.$maxsize.'B文件';          $flag = true;        }      }      //读取文件      if($flag == flase){        $row = 0;        $handle = fopen($path,'r');        $dataArray = array();        while($data = fgetcsv($handle,$max_column,",")){          $num = count($data);          if($num < $column){            $msg = '文件不符合规格真实有:'.$num.'列数据';            $flag = true;            break;          }          if($flag === flase){            for($i=0;$i<3;$i++){              if($row == 0){                break;              }              //组建数据              $dataArray[$row][$i] = $data[$i];            }          }          $row++;        }      }      return $dataArray;    }  }  $param_arr = array(  'nav'=>array('用户名','密码','邮箱'),  array(0=>array('xiaohai1','123456','xiaohai1@zhongsou.com'),     1=>array('xiaohai2','213456','xiaohai2@zhongsou.com'),     2=>array('xiaohai3','123456','xiaohai3@zhongsou.com')  ));  $column = 3;  $csv = new Csv($param_arr, $column);  //$csv->export();  $path = 'C:Documents and SettingsAdministratorTemptxxx.csv';  $import_arr = $csv->import($path,3);  var_dump($import_arr);  ?>

希望本文所述对大家的php程序设计有所帮助。

PHP实现CSV文件的导入和导出类

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服

发表评论

登录后才能评论