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 和 HTML
Oct 09 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
Jan 10 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
Laravel框架实现的上传图片到七牛功能详解
Sep 06 PHP
使用PHP开发留言板功能
Nov 19 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简单获取视频预览图的方法
2015/03/12 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
详解Webpack loader 之 file-loader
2018/11/07 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
大学生自我评价怎样写好
2013/10/23 职场文书
交通安全演讲稿
2014/01/07 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
创业大赛策划书
2014/03/01 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
说明书怎么写
2014/05/06 职场文书
汽车专业求职信
2014/06/05 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
教师批评与自我批评
2014/10/15 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
先进党组织事迹材料
2014/12/26 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
党支部评议意见
2015/06/02 职场文书
《穷人》教学反思
2016/02/19 职场文书