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 相关文章推荐
基于mysql的论坛(4)
Oct 09 PHP
ueditor 1.2.6 使用方法说明
Jul 24 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP日志LOG类定义与用法示例
Sep 06 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 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&amp;java(三)
2006/10/09 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
Python版微信红包分配算法
2015/05/04 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
python多进程实现文件下载传输功能
2018/07/28 Python
python中的for循环
2018/09/28 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
大国崛起英国观后感
2015/06/02 职场文书
信用卡工资证明范本
2015/06/19 职场文书
城南旧事读书笔记
2015/06/29 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL
windows server2008 开启端口的实现方法
2022/06/25 Servers