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');
简单明了,无需多言。