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文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
2014过年倒计时示例
Jan 31 PHP
PHP错误和异长常处理总结
Mar 06 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
浅谈json_encode用法
Mar 05 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 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的urlencode()URL编码函数浅析
2011/08/09 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
chrome原生方法之数组
2011/11/30 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
linux安装python修改默认python版本方法
2019/03/31 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
环保建议书400字
2014/05/14 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
实施意见格式范本
2015/06/05 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
详解MindSpore自定义模型损失函数
2021/06/30 Python