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 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
php基本函数汇总
Jul 09 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
php进行md5加密简单实例方法
Sep 19 PHP
详解no input file specified 三种解决方法
Nov 29 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
解决Python requests 报错方法集锦
2017/03/19 Python
numpy.random模块用法总结
2019/05/27 Python
django表单的Widgets使用详解
2019/07/22 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
护理个人求职信范文
2014/01/08 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
优秀党员个人总结
2015/02/14 职场文书
三好学生个人总结
2015/02/15 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书