php CVS文件导入导出类

对CVS文件的导入和导出php类代码感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! CVS文件的导入和导出php类代码,通过这个自定义的php类可以实现数据库的数据和CVS文件的转换

/**
 * CVS文件的导入和导出php类代码
 *
 * @param 
 * @arrange 512-笔记网: jb51.cc
 **/
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','[email protected]'),1=>array('xiaohai2','213456','[email protected]'),2=>array('xiaohai3','[email protected]')
				));
$column = 3;
$csv = new Csv($param_arr,$column);
//$csv->export();
$path = 'C:Documents and SettingsAdministratorLocal SettingsTemptxxx.csv';
$import_arr = $csv->import($path,3);
var_dump($import_arr);
?>
/***   来自编程之家 jb51.cc(jb51.cc)   ***/

 

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...