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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
Cakephp 执行主要流程
Mar 24 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
php源码的使用方法讲解
Sep 26 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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
PHP 高级课程笔记 面向对象
2009/06/21 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
Python中with及contextlib的用法详解
2017/06/08 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
英国儿童图书网站:Scholastic
2017/03/26 全球购物
竞聘书怎么写,如何写?
2014/03/31 职场文书
《秋游》教学反思
2014/04/24 职场文书
高考励志标语
2014/06/05 职场文书
让生命充满爱观后感
2015/06/08 职场文书