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
PHP 面向对象实现代码
Nov 11 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
php数组去重实例及分析
Nov 26 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
Fleaphp常见函数功能与用法示例
Nov 15 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
Laravel框架自定义分页样式操作示例
Jan 26 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
Python 正则表达式操作指南
2009/05/04 Python
python中urllib模块用法实例详解
2014/11/19 Python
python实现报表自动化详解
2017/11/16 Python
python用post访问restful服务接口的方法
2018/12/07 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
解决yum对python依赖版本问题
2019/07/05 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Python之变量类型和if判断方式
2020/05/05 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
青年创业培训欢迎词
2014/01/10 职场文书
2014年终工作总结范本
2014/12/15 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
小学体育组工作总结
2015/08/13 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python