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 操作文件的一些FAQ总结
Feb 12 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 PHP
ThinkPHP实现多数据库连接的解决方法
Jul 01 PHP
帝国cms目录结构分享
Jul 06 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
php如何执行非缓冲查询API
Jul 22 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
php实现登录页面的简单实例
Sep 29 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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连接函数implode与分割explode的深入解析
2013/06/26 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
python中偏函数partial用法实例分析
2015/07/08 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
Python关于反射的实例代码分享
2020/02/20 Python
python str字符串转uuid实例
2020/03/03 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
python的json包位置及用法总结
2020/06/21 Python
thinkphp5 路由分发原理
2021/03/18 PHP
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
养殖项目策划书范文
2014/01/13 职场文书
工作检讨书怎么写
2015/01/23 职场文书
晚会开幕词
2015/01/28 职场文书
工作态度不好检讨书
2015/05/06 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
Python制作春联的示例代码
2022/01/22 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers