当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-18 09:16:08 浏览: 评论:0 

这篇文章主要介绍了PHP实现CSV文件的导入和导出类,实例分析了php针对csv文件的操作技巧,非常具有实用价值,需要的朋友可以参考下。

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

  1. <?php 
  2. /** 
  3.  * CSV 文件处理类 
  4.  */ 
  5. class Csv{ 
  6.   public $csv_array//csv数组数据 
  7.   public $csv_str//csv文件数据 
  8.   public function __construct($param_arr$column){ 
  9.     $this->csv_array = $param_arr
  10.     $this->path = $path
  11.     $this->column = $column
  12.   } 
  13.   /** 
  14.    * 导出 
  15.    * */ 
  16.   public function export(){ 
  17.     if(emptyempty($this->csv_array) || emptyempty($this->column)){ 
  18.       return false; 
  19.     } 
  20.     $param_arr = $this->csv_array; 
  21.     unset($this->csv_array); 
  22.     $export_str = implode(',',$param_arr['nav'])."n"
  23.     unset($param_arr['nav']); 
  24.     //组装数据 
  25.     foreach($param_arr as $k=>$v){ 
  26.       foreach($v as $k1=>$v1){ 
  27.         $export_str .= implode(',',$v1)."n"
  28.       } 
  29.     } 
  30.     //将$export_str导出 
  31.     header( "Cache-Control: public" ); 
  32.     header( "Pragma: public" ); 
  33.     header("Content-type:application/vnd.ms-excel"); 
  34.     header("Content-Disposition:attachment;filename=txxx.csv"); 
  35.     header('Content-Type:APPLICATION/OCTET-STREAM'); 
  36.     ob_start();    
  37.    // $file_str= iconv("utf-8",'gbk',$export_str); 
  38.     ob_end_clean(); 
  39.     echo $export_str
  40.   } 
  41.   /** 
  42.    * 导入 
  43.    * */ 
  44.   public function import($path,$column = 3){ 
  45.     $flag = flase; 
  46.     $code = 0; 
  47.     $msg = '未处理'
  48.     $filesize = 1; //1MB 
  49.     $maxsize = $filesize * 1024 * 1024; 
  50.     $max_column = 1000; 
  51.    
  52.     //检测文件是否存在 
  53.     if($flag === flase){ 
  54.       if(!file_exists($path)){ 
  55.         $msg = '文件不存在'
  56.         $flag = true; 
  57.       } 
  58.     } 
  59.     //检测文件格式 
  60.     if($flag === flase){ 
  61.       $ext = preg_replace("/.*.([^.]+)/","$1",$path); 
  62.       if($ext != 'csv'){ 
  63.         $msg = '只能导入CSV格式文件'
  64.         $flag = true; 
  65.       } 
  66.     } 
  67.     //检测文件大小 
  68.     if($flag === flase){ 
  69.       if(filesize($path)>$maxsize){ 
  70.         $msg = '导入的文件不得超过'.$maxsize.'B文件'
  71.         $flag = true; 
  72.       } 
  73.     } 
  74.     //读取文件 
  75.     if($flag == flase){ 
  76.       $row = 0; 
  77.       $handle = fopen($path,'r'); 
  78.       $dataArray = array(); 
  79.       while($data = fgetcsv($handle,$max_column,",")){ 
  80.         $num = count($data); 
  81.         if($num < $column){ 
  82.           $msg = '文件不符合规格真实有:'.$num.'列数据'
  83.           $flag = true; 
  84.           break
  85.         } 
  86.         if($flag === flase){ 
  87.           for($i=0;$i<3;$i++){ 
  88.             if($row == 0){ 
  89.               break
  90.             } 
  91.             //组建数据 
  92.             $dataArray[$row][$i] = $data[$i]; 
  93.           } 
  94.         } 
  95.         $row++; 
  96.       } 
  97.     } 
  98.     return $dataArray
  99.   } 
  100. $param_arr = array
  101. 'nav'=>array('用户名','密码','邮箱'), 
  102. array(0=>array('xiaohai1','123456','xiaohai1@zhongsou.com'), 
  103.    1=>array('xiaohai2','213456','xiaohai2@zhongsou.com'), 
  104.    2=>array('xiaohai3','123456','xiaohai3@zhongsou.com'
  105. )); 
  106. $column = 3; 
  107. $csv = new Csv($param_arr$column); 
  108. //$csv->export(); 
  109. $path = 'C:\Documents and Settings\Administrator\Temp\txxx.csv'
  110. $import_arr = $csv->import($path,3); 
  111. var_dump($import_arr); 
  112. ?>

Tags: CSV文件导入 CSV文件导出

分享到:

相关文章