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的一个基础知识 表单提交
Jul 04 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
php中函数前加&amp;符号的作用分解
Jul 08 PHP
PHP多文件上传类实例
Mar 07 PHP
PHP动态柱状图实现方法
Mar 30 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
java解析json方法总结
May 16 PHP
laravel 执行迁移回滚示例
Oct 23 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版本实现代码
2012/09/15 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
js里面的变量范围分享
2020/07/18 Javascript
python3中bytes和string之间的互相转换
2017/02/09 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
基于python的Paxos算法实现
2019/07/03 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
爱情保证书大全
2014/04/29 职场文书
学校评语大全
2014/05/06 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
文明单位汇报材料
2014/12/24 职场文书
上班迟到检讨书
2015/05/06 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
详解jQuery的核心函数和事件处理
2022/02/18 jQuery