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 HTML代码串 截取实现代码
Jun 29 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
Javascript与PHP验证用户输入URL地址是否正确
Oct 09 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 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
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
全面分析Python的优点和缺点
2018/02/07 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
培训科主任岗位职责
2014/08/08 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python