csv导出导入

CSV(逗号分隔值文件格式)

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。


对于大数量的导出,csv导出的速度ko excel导出速度,而csv文件也能用excel打开,这大大提高了页面性能。唯一不好的就是csv导出不比excel导出灵活,加单元格样式、合并单元格就显示不出优势来了。我们来看看代码:

<?php
$data = array (
        array (
                '姓名',
                '性别',
                '年龄',
                '城市'
        ),
        array (
                '张三',
                '男',
                '34岁',
                '北京'
        ),
        array (
                '李四',
                '男',
                '38岁',
                '天津'
        ),
        array (
                '王五',
                '男',
                '90岁',
                '湖北'
        ),
        array (
                '赵六',
                '男',
                '12岁',
                '陕西'
        )
);
/*
 * 功能描述:将数组数据写入cvs文件
 *
 * 参数:
 * $data:需要写入的数组格式的数据
 * $filename:csv文件的名称,如果没有确定,默认为当前时间(格式为:YmdHis)
 *
 *
 * */
function write_csv($data = null, $filename = null) {
    if (! ($data || $filename)) {
        return false;
    }

    $fp = fopen ( $filename , 'w' );

    foreach ( $data as $fields ) {
        fputcsv ( $fp, $fields );
    }

    fclose ( $fp );
}
/*
  功能描述:不写入cvs文件,并且输出的到浏览器
 

  参数:
 
 $data:需要写入的数组格式的数据
  $filename:csv文件的名称,如果没有确定,默认为当前时间(格式为:YmdHis)
 

 *
  /
function output_csv($data = null, $filename = null) {

    if (! ($data || $filename)) {
        return false;
    }

    header('Content-Type:application/force-download');
    header("content-Disposition:attachment;filename={$filename}");

    foreach ( $data as $fields ) {
        foreach ($fields as $value){
            echo $value.',';
        }
        echo "
";
    }
}
/*
  功能描述:读取cvs文件
 

  参数:
 
 $filename:要读取的csv文件的名称
 *
 *
  /
function read_csv($filename=null) {
    if(!$filename){
        return false;
    }
    $handle=fopen($filename,'r');
    if(!$handle){
        return false;
    }

    echo "<meta charset='utf-8'/>";

    $row=1;
    while($data=fgetcsv($handle,1000,",")){
        $num=count($data);
        echo "<br>";
        //echo "<h1>  第 $row 行 ,共有 $num 个字段 <br /></h1>
";
        $row ++;
        for ($c=0;$c<$num;$c++){
            echo $data[$c]." ";
        }
    }

}
/*
  功能描述:读取cvs文件,输出到浏览器,采用file_get_contents处理
 

  参数:
 
 $filename:要读取的csv文件的名称
 *
 *
  /
function read_output_file_get_contents($filename=null){
    if(!$filename){
        return false;
    }
    // header('Content-Type:application/force-download');
    // header("content-Disposition:filename={$filename}");

    echo file_get_contents($filename);
}
/*
  功能描述:读取cvs文件,输出到浏览器,采用fopen处理
 

  参数:
 
 $filename:要读取的csv文件的名称
 *
 *
  /
function read_output_fopen($filename=null){
    if(!$filename){
        return false;
    }

    $file_handle = fopen($filename, "r");
    echo "<meta charset='utf-8'/>";
    while (!feof($file_handle)) {
        $line = fgets($file_handle);
        echo $line.'<br/>';
    }
    fclose($file_handle);
}

// output_csv($data,'ggg.xls');
//output_csv($data,'ggg.csv');

// read_csv('ggg.csv');

//read_output_file_get_contents('ggg.csv');

// read_output_fopen('ggg.csv');

简单明了,无需多言。


csv导出导入
https://github.13sai.com/2017/05/31/124/
作者
13sai
许可协议