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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
php+mysql事务rollback&amp;commit示例
Feb 08 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 PHP
PHP 信号管理知识整理汇总
Feb 19 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
PHP7匿名类的用法示例
Apr 05 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
一个php作的文本留言本的例子(六)
2006/10/09 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
浅析js封装和作用域
2013/07/09 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
Python 多线程Threading初学教程
2017/08/22 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python 命名规范知识点汇总
2020/02/14 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
2015年教师工作总结范文
2015/03/31 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
PHP基本语法
2021/03/31 PHP
python实现会员管理系统
2022/03/18 Python
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL