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模板中出现空行解决方法
Mar 08 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
php使用正则表达式获取图片url的方法
Jan 16 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
PHP常用的小程序代码段
Nov 14 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
php把文件设置为插件的技巧方法
Feb 03 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
简单实用的.net DataTable导出Execl
2013/10/28 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
Python远程方法调用实现过程解析
2020/07/28 Python
Python实现异步IO的示例
2020/11/05 Python
Python函数调用追踪实现代码
2020/11/27 Python
python通过cython加密代码
2020/12/11 Python
业绩考核岗位职责
2014/02/01 职场文书
文员的职业生涯规划发展方向
2014/02/08 职场文书
工程项目建议书范文
2014/03/12 职场文书
领导干部个人对照检查材料(群众路线)
2014/09/26 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
总经理岗位职责
2015/02/04 职场文书
皇城相府导游词
2015/02/06 职场文书
公司车队管理制度
2015/08/04 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python