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


Posted in PHP onMarch 24, 2015

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
组合算法的PHP解答方法
Feb 04 PHP
PHP中CURL方法curl_setopt()函数的参数分享
Jan 19 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
php实现的常见排序算法汇总
Sep 08 PHP
PHP、Java des加密解密实例
Apr 27 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 PHP
浅谈如何提高PHP代码质量之端到端集成测试
May 28 PHP
php自定义urlencode,urldecode函数实例
Mar 24 #PHP
PHP数组相关函数汇总
Mar 24 #PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 #PHP
php上传文件并显示上传进度的方法
Mar 24 #PHP
php通过修改header强制图片下载的方法
Mar 24 #PHP
PHP下载远程文件到本地存储的方法
Mar 24 #PHP
php实现encode64编码类实例
Mar 24 #PHP
You might like
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
深入浅析php json 格式控制
2015/12/24 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
JS的数组迭代方法
2015/02/05 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
详解Bootstrap插件
2016/04/25 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
Python中的多重装饰器
2015/04/11 Python
Django验证码的生成与使用示例
2017/05/20 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
python文字转语音实现过程解析
2019/11/12 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
Python 日期与时间转换的方法
2020/08/01 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
银行服务感言
2014/03/01 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
学雷锋活动简报
2015/07/20 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
新郎结婚感言
2015/07/31 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书