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 相关文章推荐
php5新改动之短标记启用方法
Sep 11 PHP
PHP COOKIE及时生效的方法介绍
Feb 14 PHP
smarty中js的调用方法示例
Oct 27 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
php中file_get_contents()函数用法实例
Feb 21 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
Laravel中Kafka的使用详解
Mar 24 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入门学习知识点三 PHP上传
2011/07/14 PHP
第六章 php目录与文件操作
2011/12/30 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
jquery uaMatch源代码
2011/02/14 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
Python3生成手写体数字方法
2018/01/30 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
tensorflow实现简单逻辑回归
2018/09/07 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
python安装scipy的步骤解析
2019/09/28 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
期末总结的个人自我评价
2013/11/02 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
倡议书格式
2014/04/14 职场文书
故宫的导游词
2015/01/31 职场文书
大国崛起观后感
2015/06/02 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书