PHP实现CSV文件的导入和导出类
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-18 09:16:08 浏览: 评论:0
这篇文章主要介绍了PHP实现CSV文件的导入和导出类,实例分析了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(emptyempty($this->csv_array) || emptyempty($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);
- ?>
Tags: CSV文件导入 CSV文件导出
- 上一篇:php实现用于验证所有类型的信用卡类
- 下一篇:php控制文件下载速度的方法
相关文章
- ·php实现CSV文件导入和导出(2021-06-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)