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 相关文章推荐
php mysql Errcode: 28 终极解决方法
Jul 01 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
PHP获取页面执行时间的方法(推荐)
Dec 10 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 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
php4的session功能评述(一)
2006/10/09 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
亮化工程实施方案
2014/03/17 职场文书
社会工作专业求职信
2014/07/15 职场文书
公路施工安全责任书
2015/05/08 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js