这个程序是用php 读取一个很大的excel文件,

先将 excel 文件保存成csv 文件,

然后利用 迭代器 逐行读取 excel 单元格的值,

拿到值以后 做相应处理,并打印结果。

<?php

// 加载 GuzzleHttp 为发送 http 请求提供方便
include_once('./vendor/autoload.php');
$client = new \GuzzleHttp\Client();

// 定义读取文件
    $file = './file/a.csv';

function getRows($file)
    {
        $handle = fopen($file, 'rb');

if (!$handle) {
            throw new Exception();
        }
        while (!feof($handle)) {
             yield fgetcsv($handle);
        }
        fclose($handle);
    }

// 获取迭代器
    $xrange = getRows($file);
    $ii = 0;

// 迭代处理 cvs 文件中的每一行内容
    foreach ($xrange as $key => $value) {
        $value = eval('return '.iconv('gbk','utf-8',var_export($value,true)).';');

$str = $value[4];
        $url = 'http://xxxx.xxxx.com/?api='.$str;

$response = $client->get($url);
        $body = $response->getBody();
        $remainingBytes = $body->getContents();

$remainingBytes = json_decode($remainingBytes,true);
        if( !empty($remainingBytes['data']) ){
            $res_ids = '';
            foreach ($remainingBytes['data'] as $kt => $vt) {
                $res_ids .= $vt['outid'].',';
            }
            $res_ids = trim($res_ids,',');
        }else{
            $res_ids = 'error';
        }

print_r($str);
            echo "\n";
            echo "\n";
            echo "\n";
            print_r($value[4]);
            echo "\n";
            echo "\n";
            echo "\n";
            print_r($res_ids);

$file = fopen('./new_end/new_a.xls', 'a');
        fwrite($file, $res_ids."\t".$str."\t".$value[4]."\t\n");
        // fclose($file);
        echo "\n";
        echo "\n";
        echo "\n";
        // die;
        $ii++;
        echo "time_________".$ii;
        echo "\n";
        echo "\n";
        echo "\n";
    }

?>

如何用 php 读取一个很大的 excel 文件。的更多相关文章

  1. 有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果(转)

    引用 前几天在网上看到一个淘宝的面试题:有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果.一:分析题目 从题中可以看到“很大的List”以及“ ...

  2. string::npos,一个很大的数

    string::npos,这是一个很大的数 npos 是这样定义的: static const size_type npos = -1; 因为 string::size_type (由字符串配置器 a ...

  3. IoC是一个很大的概念,可以用不同的方式实现。

    IoC是一个很大的概念,可以用不同的方式实现.其主要形式有两种: ◇ 依赖查找:容器提供回调接口和上下文条件给组件.EJB和Apache Avalon 都使用这种方式.这样一来,组件就必须使用容器提供 ...

  4. IoC是一个很大的概念,可以用不同的方式实现。其主要形式有两种:

    IoC是一个很大的概念,可以用不同的方式实现.其主要形式有两种: ◇依赖查找:容器提供回调接口和上下文条件给组件.EJB和ApacheAvalon都使用这种方式.这样一来,组件就必须使用容器提供的AP ...

  5. node.js 如何处理一个很大的文件

    node.js 如何处理一个很大的文件 思路 arraybuffer 数据分段 时间分片 多线程 web workers sevice workers node.js 如何处理一个很大的文件 http ...

  6. Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案

    注意:此参考解决方案只是针对xlsx格式的excel文件! 背景 前一段时间遇到一种情况,服务器经常宕机,而且没有规律性,查看GC日志发生了out of memory,是堆溢出导致的,分析了一下堆的d ...

  7. 【生产问题】记还原一个很小的BAK文件,但却花了很长时间,分析过程

    [生产问题]还原一个很小的BAK文件,但却花了很长时间? 关键词:备份时事务日志太大会发生什么?还原时,事务日志太大会怎么办? 1.前提: [1.1]原库数据已经丢失,只有这个bak了 [1.2]ba ...

  8. XLConnect:一个用R处理Excel文件的高效平台

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  9. Pandas 读取超过 65536 行的 Excel 文件

    Excel 文件的格式曾经发生过一次变化,在 Excel 2007 以前,使用扩展名为 .xls 格式的文件,这种文件格式是一种特定的二进制格式,最多支持 65,536 行,256 列表格.从 Exc ...

随机推荐

  1. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) A - Neverending competitions

    地址:http://codeforces.com/contest/765/problem/A 题目: A. Neverending competitions time limit per test 2 ...

  2. Linux 进程管理 vmstat、top、pstree命令

    vmstat命令:监控系统资源 vmstat 是 Linux 中的一个综合性能分析工具,可以用来监控 CPU 使用.进程状态.内存使用.虚拟内存使用.磁盘输入/输出状态等信息.vmstat 命令格式如 ...

  3. 负载均衡集群ipvsadm命令及基本用法

    ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置.需要使用yum单独安装. 基本用法: ipvsadm COMMAND [protocol] service-addre ...

  4. MySQL-5.7密码策略及用户资源限制

    1.密码策略 在mysql 5.6对密码的强度进行了加强,推出了validate_password 插件.支持密码的强度要求. (1)安装插件 [root@localhost ~]# ll /usr/ ...

  5. Spark1.x和2.x如何读取和写入csv文件

    看很多资料,很少有讲怎么去操作读写csv文件的,我也查了一些.很多博客都是很老的方法,还有好多转来转去的,复制粘贴都不能看.下面我在这里归纳一下,以免以后用到时再费时间去查.前端实现文件下载和拖拽上传 ...

  6. E - Water Distribution

    E - Water Distribution 题目大意: 有\(N\)座城市,给定这\(N\)座城市的坐标和初始的水量\(x_i,y_i,a_i\),在两个城市之间运水的花费是两个城市的欧几里得距离. ...

  7. 主机不能访问虚拟机web服务的问题

    虚拟机是CentOs 7 iptables -Fiptables -P INPUT ACCEPT 参考:http://blog.csdn.net/abnereel/article/details/41 ...

  8. MVC bootstrap 实现 bootstrap table 左右传递数据

    源码: @{ ViewBag.Title = "Index"; } @using BC.Platform.UPMS.Models; <!DOCTYPE html> &l ...

  9. 关于分析web.xml的一篇博客,写的很详细

    http://blog.csdn.net/believejava/article/details/43229361

  10. 报错HTTP Status 500 - HHH000142: Javassist Enhancement failed: cn.itcast.entity.Customer; nested exception is org.hibernate.HibernateException: HHH000142: Javassist Enhancement failed: cn.itcast.entity.

    报错 type Exception report message HHH000142: Javassist Enhancement failed: cn.itcast.entity.Customer; ...