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木马攻击防御之道
Mar 24 PHP
php array_map()数组函数使用说明
Jul 12 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
php中adodbzip类实例
Dec 08 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
php二维码生成以及下载实现
Sep 28 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
Oct 14 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
Apr 06 PHP
PHP RabbitMQ消息列队
May 11 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 zend解密软件绿色版测试可用
2008/04/14 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
php表单敏感字符过滤类
2014/12/08 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
python正则分组的应用
2013/11/10 Python
python 调用HBase的简单实例
2016/12/18 Python
python正则分析nginx的访问日志
2017/01/17 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
Python 实现进度条的六种方式
2021/01/06 Python
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
金融专业个人求职信
2013/09/22 职场文书
历史专业毕业生的自我鉴定
2013/11/15 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android