如何用 php 读取一个很大的 excel 文件。
这个程序是用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 文件。的更多相关文章
- 有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果(转)
引用 前几天在网上看到一个淘宝的面试题:有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果.一:分析题目 从题中可以看到“很大的List”以及“ ...
- string::npos,一个很大的数
string::npos,这是一个很大的数 npos 是这样定义的: static const size_type npos = -1; 因为 string::size_type (由字符串配置器 a ...
- IoC是一个很大的概念,可以用不同的方式实现。
IoC是一个很大的概念,可以用不同的方式实现.其主要形式有两种: ◇ 依赖查找:容器提供回调接口和上下文条件给组件.EJB和Apache Avalon 都使用这种方式.这样一来,组件就必须使用容器提供 ...
- IoC是一个很大的概念,可以用不同的方式实现。其主要形式有两种:
IoC是一个很大的概念,可以用不同的方式实现.其主要形式有两种: ◇依赖查找:容器提供回调接口和上下文条件给组件.EJB和ApacheAvalon都使用这种方式.这样一来,组件就必须使用容器提供的AP ...
- node.js 如何处理一个很大的文件
node.js 如何处理一个很大的文件 思路 arraybuffer 数据分段 时间分片 多线程 web workers sevice workers node.js 如何处理一个很大的文件 http ...
- Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案
注意:此参考解决方案只是针对xlsx格式的excel文件! 背景 前一段时间遇到一种情况,服务器经常宕机,而且没有规律性,查看GC日志发生了out of memory,是堆溢出导致的,分析了一下堆的d ...
- 【生产问题】记还原一个很小的BAK文件,但却花了很长时间,分析过程
[生产问题]还原一个很小的BAK文件,但却花了很长时间? 关键词:备份时事务日志太大会发生什么?还原时,事务日志太大会怎么办? 1.前提: [1.1]原库数据已经丢失,只有这个bak了 [1.2]ba ...
- XLConnect:一个用R处理Excel文件的高效平台
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- Pandas 读取超过 65536 行的 Excel 文件
Excel 文件的格式曾经发生过一次变化,在 Excel 2007 以前,使用扩展名为 .xls 格式的文件,这种文件格式是一种特定的二进制格式,最多支持 65,536 行,256 列表格.从 Exc ...
随机推荐
- Linux中read命令的用法—(6/30)
read命令是一个非常重要的bash命令,用于从键盘或者表中输入中文本,并且可以和用户进行交互:该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开.在read命令后面,如果没有指定变量名 ...
- 通过自动回复机器人学Mybatis:OGNL+log4j.properties
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 OGNL规则: 从哪里取?(作用域.取值范围,例如封装入一个对象,该对象就是取值范围) ...
- CentOS6升级Apache-httpd2.4.29
本文档解决AppacheHttp由版本2.2.x升级到版本2.4.29的问题,安装需要先进行依赖软件包的安装,请检查相应依赖软件包安装情况,如系统已经正确安装相应依赖软件包,可略过,本文所述版本升级不 ...
- jQuery幻灯片播放器插件
在线演示 本地下载
- jQuery双向滑动杆 设置数值百分比
在线演示 本地下载
- application pool can not write to event log
https://stackoverflow.com/questions/9564420/the-source-was-not-found-but-some-or-all-event-logs-coul ...
- Codeforces 9C Hexadecimal's Numbers - 有技巧的枚举
2017-08-01 21:35:53 writer:pprp 集训第一天:作为第一道题来讲,说了两种算法, 第一种是跟二进制数联系起来进行分析: 第二种是用深度搜索来做,虽然接触过深度搜索但是这种题 ...
- JavaWeb -- Struts1 多文件上传与下载 DownloadAction, DispatchAction
1. 多文件上传与下载 上传下载jsp: <%@ page language="java" import="java.util.*" pageEncodi ...
- Spring:通配符的匹配很全面, 但无法找到元素 XXXXX' 的声明
问题:配置Spring的时候容易发生如题的这样一个经常性的错误,错误如下(以context为例) org.springframework.beans.factory.xml.XmlBeanDefini ...
- PHP超级全局变量、魔术变量和魔术函数的区别和联系
PHP超级全局变量.魔术变量和魔术函数的区别和联系 一.总结 一句话总结:PHP超级全局变量主要用于web开发,魔术变量主要用于输出当前对象的信息,魔术函数则是对象的常用方法 相同点: 1.PHP超级 ...