PHP實現CSV檔案的匯入和匯出類_php技巧

來源:互聯網
上載者:User

本文執行個體講述了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 Settings\Administrator\Temp\txxx.csv';$import_arr = $csv->import($path,3);var_dump($import_arr);?>

希望本文所述對大家的php程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.