php操作csv文件代码实例汇总


Posted in PHP onSeptember 22, 2014

1.读取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");

6.读取CSV文件指定行和区间行

/*****读取CSV文件中的指定行*****/
function get_file_line_a($file_name,$line){
 $n = 0;
 $handle = fopen($file_name,'r');
 if ($handle) {
  while (!feof($handle)) {
    ++$n;
    $out = fgets($handle, 4096);
    if($line==$n) break;
  }
  fclose($handle);
 }
 if( $line==$n) return $out;
 return false;
}

echo get_file_line("windows_2011_s.csv", 10);//输入第10行内容


/*****读取CSV文件中的区间行*****/
function get_file_line_b( $file_name,$line_star, $line_end){
  $n = 0;
  $handle = fopen($file_name,"r");
  if ($handle) {
    while (!feof($handle)) {
      ++$n;
      $out = fgets($handle, 4096);
      if($line_star <= $n){
        $ling[] = $out;
      }
      if ($line_end == $n) break;
    }
    fclose($handle);
  }
  if( $line_end==$n) return $ling;
  return false;
}

//用 get_file_line读取并输出第11行到第20行

$aa = get_file_line("windows_2011_s.csv", 11, 20); //从第11行到第20行
foreach ($aa as $bb){
  echo $bb."<br>";
}
PHP 相关文章推荐
第六节 访问属性和方法 [6]
Oct 09 PHP
PHP新手上路(八)
Oct 09 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
PHP连接access数据库
Mar 27 PHP
PHP实现简单汉字验证码
Jul 28 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
PHP文件操作实例总结
Sep 27 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 #PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 #PHP
PHP中exec与system用法区别分析
Sep 22 #PHP
PHP-Java-Bridge使用笔记
Sep 22 #PHP
11个PHPer必须要了解的编程规范
Sep 22 #PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 #PHP
php分页函数完整实例代码
Sep 22 #PHP
You might like
php array_slice函数的使用以及参数详解
2008/08/30 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
地震发生中逃生十大法则
2008/05/12 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python pillow模块使用方法详解
2019/08/30 Python
Python函数中的可变长参数详解
2019/09/12 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
区分python中的进程与线程
2020/08/13 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
小学生自我评价范例
2013/09/24 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
JS中如何优雅的使用async await详解
2021/10/05 Javascript
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
python Tkinter模块使用方法详解
2022/04/07 Python