PHP实现CSV文件的导入和导出类
本文实例讲述了PHP实现CSV文件的导入和导出类。分享给大家供大家参考。具体如下:
<?php
/**
*CSV文件处理类
*/
classCsv{
public$csv_array;//csv数组数据
public$csv_str;//csv文件数据
publicfunction__construct($param_arr,$column){
$this->csv_array=$param_arr;
$this->path=$path;
$this->column=$column;
}
/**
*导出
**/
publicfunctionexport(){
if(empty($this->csv_array)||empty($this->column)){
returnfalse;
}
$param_arr=$this->csv_array;
unset($this->csv_array);
$export_str=implode(',',$param_arr['nav'])."n";
unset($param_arr['nav']);
//组装数据
foreach($param_arras$k=>$v){
foreach($vas$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;
}
/**
*导入
**/
publicfunctionimport($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=newCsv($param_arr,$column);
//$csv->export();
$path='C:\DocumentsandSettings\Administrator\Temp\txxx.csv';
$import_arr=$csv->import($path,3);
var_dump($import_arr);
?>
希望本文所述对大家的php程序设计有所帮助。