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 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
Jul 06 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
php日期操作技巧小结
Jun 25 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
Laravel如何实现自动加载类
Oct 14 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生成便于打印的网页
2006/10/09 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
php类的定义与继承用法实例
2015/07/07 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
python调用自定义函数的实例操作
2019/06/26 Python
Python 画出来六维图
2019/07/26 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
五型班组建设方案
2014/02/10 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
文明家庭事迹材料
2014/12/20 职场文书
稽核岗位职责
2015/02/10 职场文书
借条如何写
2015/05/26 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
springboot读取nacos配置文件
2022/05/20 Java/Android