php操作cvs

2016-06-04 23:09:07 查看 1133 回复 0

网站常常需要导出数据,常见的有CSV,XLS,XML 等待格式。CSV 是较为常见的一种数据格式,由很多个逗号连接,与XLS 格式的数据相比,还是有一定的优势。导出数据的两种思路:

1.当用户触发操作时,在服务器端生成一个可供用户下载的CSV文件。

2.当用户触发操作时,在客户端通过HTTP头信息与PHP结合,生成一个可供下载的CSV文件。

第一种实现方式,每一次下载都在服务器端生成一个CSV 文件,如果时间久了,那么服务器上的CSV 文件会越来越多,以后维护起来也不方便。

第二种实现方式,在没有优化的情况下,如果数据量大一些,那么生成CSV 会很慢,而且有可能由于网络等原因,造成数据丢失。

第一种方件的简单实现方式:

 $fp=fopen(“test.csv”,’w+’);//生成CSV文件

$head_title=array(‘报表名‘,’操作人‘,’导出时间‘);

fputcsv($fp,$head_title);//生成报表头,

fclose($fp);//关闭操作文件

第二种实现方式

 gzip 压缩

**/

function ob_gzip($content)

{

if(!headers_sent()&&extension_loaded(“zlib”) && strstr($_SERVER["HTTP_ACCEPT_ENCODING"],”gzip”))

{

$content=StringHelper::Encoding($content,’utf-8′,’GBK’);

$content = gzencode($content,9);

header(“Content-Encoding: gzip”);

header(“Vary: Accept-Encoding”);

header(“Content-Length: ”.strlen($content));

}

return $content;

}

function export_csv($data=NULL)

{

$down_file=’test.csv’;

header(“Content-Type: text/csv;charset=utf-8″);

header(“Content-Disposition: attachment; filename=$down_name”);

header(‘Cache-Control:must-revalidate,post-check=0,pre-check=0′);

header(‘Expires:0′);

header(‘Pragma:public’);

ob_start(‘ob_gzip’);//对输出数据进行压缩,可减少用户下载时候的等待时间

//ob_start(array(&$this, ’ob_gzip’));

echo ”报表名,操作人,导出时间\n”;

ob_end_flush();//结束压缩

}

经测试:未使用GZIP原页面数据量大小为 20.61 KB (21,101 字节)

使用数据压缩后,页面大小为0.23 KB (236 字节)

Php实现导入csv格式

导入模板

 if (isset($_POST['import'])){

$file = $_FILES['csv_goods'];

$file_type = substr(strstr($file['name'],’.'),1);

// 检查文件格式

if ($file_type != ’csv’){

echo ’文件格式不对,请重新上传!’;

exit;

}

$handle = fopen($file['tmp_name'],”r”);

$file_encoding = mb_detect_encoding($handle);

// 检查文件编码

if ($file_encoding != ’ASCII’){

echo ’文件编码错误,请重新上传!’;

exit;

}

$row = 0;

while ($data = fgetcsv($handle,1000,’,')){

//echo ”$row”;  //可以知道总共有多少行

$row++;

if ($row == 1)

continue;

$num = count($data);

// 这里会依次输出每行当中每个单元格的数据

for ($i=0; $i<$num; $i++){

echo $data[$i].”
”;

// 在这里对数据进行处理

}

}

fclose($handle);

}

本文转自:

http://www.175it.com/php/7.html