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数据库连接
Oct 09 PHP
php快速url重写 更新版[需php 5.30以上]
Apr 20 PHP
php 缩略图实现函数代码
Jun 23 PHP
PHP中的strtr函数使用介绍(str_replace)
Oct 20 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
PHP制作用户注册系统
Oct 23 PHP
ThinkPHP静态缓存简单配置和使用方法详解
Mar 23 PHP
微信支付的开发流程详解
Sep 13 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
php获取ajax的headers方法与内容实例
Dec 27 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 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
PHP安全下载文件的方法
2016/04/07 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
微信小程序image图片加载完成监听
2019/08/31 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
《Python学习手册》学习总结
2018/01/17 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
Python 函数返回值的示例代码
2019/03/11 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
文职个人求职信范文
2013/09/23 职场文书
房地产融资计划书
2014/01/10 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
中班上学期个人总结
2015/02/12 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android