PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP基础 >> 基础文章 >> 

PHP 读写 CSV相关操作

PHP 读写 CSV相关操作

来源:phperz.com  作者:phper  发布时间:2012-05-29
CSV是(逗号分隔值)的英文缩写,通常都是纯文本文件。可以使用WORDPAD或是记事本(NOTE)或Excel来打开。 取csv数据, 输出到sales.csv文件中 $sales = array( array('Northeast', '2004-01-01', '2004-02-01', 12.54), array('Northwest', '2004-01-01', '2004-02-01'

CSV是(逗号分隔值)的英文缩写,通常都是纯文本文件。可以使用WORDPAD或是记事本(NOTE)或Excel来打开。

取csv数据, 输出到sales.csv文件中

$sales = array(
 array('Northeast', '2004-01-01', '2004-02-01', 12.54),
 array('Northwest', '2004-01-01', '2004-02-01', 546.33),
 array('Southeast', '2004-01-01', '2004-02-01', 93.26),
 array('Southwest', '2004-01-01', '2004-02-01', 945.21),
 array('All Regions', '---', '--', 1597.34),
);

$fh = fopen('sales.csv', 'w') or die("Can't open sales.csv");
foreach($sales as $sales_line){
 if(fputcsv($fh, $sales_line) === false){
  die("Can't write CSV line"); 
 }
}

fclose($fh) or die("Can't close sales.csv");

2. 读取csv数据, 使用特殊的流输出

$sales = array(
 array('Northeast', '2004-01-01', '2004-02-01', 12.54),
 array('Northwest', '2004-01-01', '2004-02-01', 546.33),
 array('Southeast', '2004-01-01', '2004-02-01', 93.26),
 array('Southwest', '2004-01-01', '2004-02-01', 945.21),
 array('All Regions', '---', '--', 1597.34),
);

$fh = fopen('php://output', 'w');
foreach($sales as $sales_line){
 if(fputcsv($fh, $sales_line) === false){
  die("Can't write CSV line"); 
 }
}

fclose($fh);

3. 读取csv数据, 输出到缓冲中

$sales = array(
 array('Northeast', '2004-01-01', '2004-02-01', 12.54),
 array('Northwest', '2004-01-01', '2004-02-01', 546.33),
 array('Southeast', '2004-01-01', '2004-02-01', 93.26),
 array('Southwest', '2004-01-01', '2004-02-01', 945.21),
 array('All Regions', '---', '--', 1597.34),
);

ob_start();
$fh = fopen('php://output', 'w') or die("Can't open php://output");
foreach($sales as $sales_line){
 if(fputcsv($fh, $sales_line) === false){
  die("Can't write CSV line"); 
 }
}

fclose($fh) or die("Can't close php://output");
$output = ob_get_contents();
ob_end_clean();

4. 读取csv文件的数据

$fp = fopen('sample3.csv', 'r') or die("can't open file");
print "<table>\n";
while($csv_line = fgetcsv($fp)){
 print '<tr>';
 for($i=0, $j=count($csv_line); $i<$j; $i++){
  // print '<td>'.htmlentities($csv_line[$i]).'</td>'; 
  print '<td>'.htmlentities(iconv("gb2312","utf-8",$csv_line[$i])).'</td>';
 }
 print "</tr>\n";
}
print "</table>\n";
fclose($fp) or die("can't close file");

5. 下载的CSV文件

$sales = array(
 array('Northeast', '2004-01-01', '2004-02-01', 12.54),
 array('Northwest', '2004-01-01', '2004-02-01', 546.33),
 array('Southeast', '2004-01-01', '2004-02-01', 93.26),
 array('Southwest', '2004-01-01', '2004-02-01', 945.21),
 array('中国', '2004-01-01', '2004-02-01', 945.21),
);

$fh = fopen('php://output', 'w') or die("can't open php://output");
$total = 0;

// 告诉浏览器发送的是一个csv文件
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="sales.csv"');

// 输出表头
fputcsv($output, array('Region', 'Start Date', 'End Date', 'Amount'));
// 输出每一行数据, 并递增$total
foreach($sales as $sales_line){
 if(fputcsv($fh, $sales_line) === false){
  die("Can't write CSV line"); 
 }else{
  $total += $sales_line[3]; 
 }
}

fputcsv($fh, array('All Regions', '--', '--', $total));

fclose($fh) or die("Can't close php://output");


延伸阅读:
php中数据的批量导入(csv文件)
js读取本地excel文档数据
PHP导出Excel 之 Spreadsheet_Excel_Writer
php生成csv文件示例
PHP导入和导出Excel文件方法总汇
php excel类phpExcel使用方法
php导出csv文件乱码问题解决方法
利用PHPExcel导出 .xlsx .xls 档设定说明
PHP生成Excel报表的方法
PHPExcel导出excel方法


PHP导出MySQL数据到Excel文件
phpExcel简单示例
Tags: csv  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号