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通过session id 实现session共享和登录验证的代码
Jun 03 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
浅谈ThinkPHP的URL重写
Nov 25 PHP
如何实现php图片等比例缩放
Jul 28 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
PHP判断是否微信访问的方法示例
Mar 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JS Array对象入门分析
2008/10/30 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
js图片查看器插件用法示例
2019/06/22 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python中分数的相关使用教程
2015/03/30 Python
Python中捕获键盘的方式详解
2019/03/28 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
社区志愿者心得体会
2014/01/03 职场文书
统计系教授推荐信
2014/02/28 职场文书
企业消防安全责任书
2014/07/23 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python