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+mysql分页代码详解
Mar 27 PHP
php zip文件解压类代码
Dec 02 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
yii2 resetful 授权验证详解
May 18 PHP
详解php中的implements 使用
Jun 13 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
PHP反射基础知识回顾
2020/09/10 PHP
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
js简单抽奖代码
2015/01/16 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
vue弹窗组件使用方法
2018/04/28 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
美国电视购物:QVC
2017/02/06 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
小学英语教学反思案例
2014/02/04 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
仓管岗位职责范本
2014/02/08 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
招商银行收入证明
2015/06/17 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
python 远程执行命令的详细代码
2022/02/15 Python