AD

PHP实现CSV文件的导入和导出类

这篇文章主要介绍了PHP实现CSV文件的导入和导出类,实例分析了php针对csv文件的操作技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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=t**.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','[email protected]'),
   1=>array('xiaohai2','213456','[email protected]'),
   2=>array('xiaohai3','123456','[email protected]')
));
$column = 3;
$csv = new Csv($param_arr, $column);
//$csv->export();
$path = 'C:\Documents and Settings\Administrator\Temp\t**.csv';
$import_arr = $csv->import($path,3);
var_dump($import_arr);
?>

希望本文所述对大家的php程序设计有所帮助。

标签: csv, PHP, 类
分类: php技巧
时间: 2014-07-30

相关文章

  1. C#中csv文件与DataTable互相导入处理实例解析

    这篇文章主要介绍了C#中csv文件与DataTable互相导入处理实例解析,非常实用的功能,需要的朋友可以参考下 本文介绍了C#中csv文件与DataTable互相导入处理实例解析,主要功能代码封装处理下,相对比较简单. ...
  2. 应用Java泛型和反射导出CSV文件的方法

    这篇文章主要介绍了应用Java泛型和反射导出CSV文件的方法,通过一个自定义函数结合泛型与反射的应用实现导出CSV文件的功能,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例讲述了应用Java泛型和反射导出CSV文 ...
  3. 详解PHP导入导出CSV文件

    项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用PHP并结合mysql,实现了CSV格式数据的导入和导出功能. 我们先准备mysql数据表,假设项目中有一张 ...
  4. csv文件导入导出到mysql

    1. 从mysql中导出csv文件 echo "select * from table into outfile '/tmp/table.csv' fields terminated by ',' escape ...
  5. 使用PHP导入和导出CSV文件(转)--好文章要共享!

    我们先准备mysql数据表,假设项目中有一张记录学生信息的表student,并有id,name,sex,age分别记录学生的姓名.性别.年龄等信息. CREATE TABLE `student` ( `id` int(1 ...
  6. php中数据的批量导入(csv文件)

    有时写程序时后台要求把大量数据导入数据库中,比如计算机考试成绩的查询.电话簿的数据等一般都是存放在excel中的,这时我们可把数据导出成csv文件,然后通过以下程序即可在后台批量导入数据到数据库中. 下面只是主要程序部分 ...
  7. C#导出数据到CSV文件的通用类实例

    这篇文章主要介绍了C#导出数据到CSV文件的通用类,将C#操作CSV文件的常用技巧封装进一个通用类中以方便调用,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#导出数据到csv文件的通用类.分享给大家供大家参考 ...
  8. bugzilla导出的csv文件乱码的问题

    CSV英文全称为Comma Separated Values,简称CSV,是一种纯文本格式,用来存储数据. 在CSV中,数据的字段由逗号分开,程序通过读取文件重新创建正确的字段,方法是每次遇到逗号时开始新一段数据. bu ...
  9. 导入csv文件或者excel文件数据到mysql的一些记录

    找到了一个比较好的解决办法是: 访问http://databaseimportscriptor.com/ (在墙外)网站,选择导入格式,选择导入文件,设置表名,就会自动生成sql语句,复制这个语句,在mysql中粘贴执行 ...
  10. php将csv文件导入到mysql数据库的方法

    这篇文章主要介绍了php将csv文件导入到mysql数据库的方法,通过读取csv文件到数组再调用while循环实现插入数据到数据库,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了php将csv文件导入到mysql ...
  11. asp.net 导出到CSV文件乱码的问题

    导出到CSV文件乱码的问题,需要的朋友可以参考下. http://social.microsoft.com/Forums/zh-CN/295/thread/14a833f5-95bf-48ef-b6cf-c6028f33 ...
  12. H2 数据库导入CSV文件实现原理简析

    在开发应用中经常会碰到一些数据库方面的问题,例如:csv文件导入数据库,本文将以此问题进行深入介绍,需要的朋友可以参考下 1.启动H2数据库不打开浏览器窗口(默认是打开的) 2.数据库创建SQL增加了支持BigDecim ...
  13. 如何在symfony中导出为CSV文件中的数据

    如果您需要在symfony中将数据库中的数据导出为CSV文件,试试这个 开始: public function executeRegistrantsToCsv(){ $id = $this->getRequestP ...
  14. php使用指定编码导出mysql数据到csv文件的方法

    这篇文章主要介绍了php使用指定编码导出mysql数据到csv文件的方法,涉及php查询mysql及操作csv文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php使用指定编码导出mysql数据到c ...
  15. php导入csv文件碰到乱码问题的解决方法

    这篇文章主要介绍了php导入csv文件碰到乱码问题的解决方法,需要的朋友可以参考下 今天主要是想写一个php导入csv文件的方法,其实网上一搜一大把.都是可以实现怎么去导入的.但是我导入的时候遇到了两个问题,一个是在wi ...
  16. java生成csv文件乱码的解决方法示例 java导出csv乱码

    这篇文章主要介绍了java生成csv文件乱码的解决方法,大家可以直接看下面的示例 import java.io.File; import java.io.IOException; import java.util.Lis ...
  17. php操作csv文件导入mysql时中文乱码的解决办法

    用网上通用的方法读取并上传csv文件内容进入mysql数据库中时,中文显示乱码,即使对数据用iconv函数转码后仍然乱码,这时可以用setlocale()函数: 这个函数经查阅是配置地域信息用的,在读取和写入csv数据前 ...
  18. C# CSV文件与DataTable之间的转化

    1.关于本文 今天写了个C#工具类CSVHelper,可以将CSV文件导入到DataTable中,也可以将DataTable中的数据导出到CSV文件里 2.制作CSV样本文档 我专门写了个VBA宏来制作CSV样本文档,代 ...
  19. php使用fgetcsv读取csv文件出现乱码的解决方法

    这篇文章主要介绍了php使用fgetcsv读取csv文件出现乱码的解决方法,实例分析了造成乱码的原因与对应的解决方法,并给出了Linux平台下的乱码解决方法,需要的朋友可以参考下 本文实例讲述了php使用fgetcsv读 ...