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项目的方法
Oct 09 PHP
第一节--面向对象编程
Nov 16 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
php email邮箱正则
Oct 08 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
php面象对象数据库操作类实例
Dec 02 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python常用算法学习基础教程
2017/04/13 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python实现五子棋小程序
2019/06/18 Python
python实现最小二乘法线性拟合
2019/07/19 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
详解Python yaml模块
2020/09/23 Python
python批量修改文件名的示例
2020/09/27 Python
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
教师个人读书活动总结
2014/07/08 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
Python标准库pathlib操作目录和文件
2021/11/20 Python