今天要处理两个excel。两个循环嵌套验证重复性。所以写了几个函数来处理20亿次的数据量。

一。把excel读出来,保存为json。利用phpexcel插件:

<?php

header("Content-Type:text/html;charset=utf-8");
$dir=dirname(__FILE__);//找到当前脚本所在路径
require $dir."/PHPExcel/PHPExcel/IOFactory.php";//引入读取excel的类文件
$filename=$dir."/o.xls";
$fileType=PHPExcel_IOFactory::identify($filename);//自动获取文件的类型提供给phpexcel用
$objReader=PHPExcel_IOFactory::createReader($fileType);//获取文件读取操作对象
$sheetName=array("Sheet1");
$objReader->setLoadSheetsOnly($sheetName);//只加载指定的sheet
$objPHPExcel=$objReader->load($filename);//加载文件
/**$sheetCount=$objPHPExcel->getSheetCount();//获取excel文件里有多少个sheet
for($i=0;$i<$sheetCount;$i++){
$data=$objPHPExcel->getSheet($i)->toArray();//读取每个sheet里的数据 全部放入到数组中
print_r($data);
}**/
$i=0;
foreach($objPHPExcel->getWorksheetIterator() as $sheet){//循环取sheet
foreach($sheet->getRowIterator() as $row){//逐行处理
if($row->getRowIndex()<2){
continue;
}
$da = array();
foreach($row->getCellIterator() as $cell){//逐列读取
$data=$cell->getValue();//获取单元格数据
$da[] = $data; }
$d[] = $da; } } $dd =json_encode($d);
touch('o.html');
file_put_contents('o.html', $dd);
echo "成功";

二、把弄好的数组,在保存为execl。但是直接操作excel,会比较慢,所保存为csv

<?php
$filenamew ="dd.html";//读取出来的json
$json_sw = file_get_contents($filenamew);
$data = json_decode($json_sw);
$filename = "33"; //保存的文件名 header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$filename}.csv");
header("Pragma: no-cache");
header("Expires: 0"); outputCSV($data); function outputCSV($data) {
$outputBuffer = fopen("php://output", 'w');
foreach($data as $val) {
foreach ($val as $key => $val2) {
$val[$key] = iconv('utf-8', 'gbk', $val2);// CSV的Excel支持GBK编码,一定要转换,否则乱码
}
fputcsv($outputBuffer, $val);
}
fclose($outputBuffer);
} ?>

PHP处理数据--excel与scv与json的更多相关文章

  1. 以ORM的思路来从Excel文件中读取JSON数据列表

    1.一个常见的问题就是如何读取excel. 这里面有几个分支的问题,一个是如何使用poi读取excel,网上例子很多,但是这只解决了第一步.如何将excel读取入一定的数据结构这是第二个问题,还有就是 ...

  2. Python3 Pandas的DataFrame格式数据写入excle文件、json、html、剪贴板、数据库

    Python3 Pandas的DataFrame格式数据写入excle文件.json.html.剪贴板.数据库 一.DataFrame格式数据 Pandas是Python下一个开源数据分析的库,它提供 ...

  3. ajex请求的数据 什么时候需用Json.parse()

    ajex请求的数据 什么时候需用 Json.parse()

  4. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

    摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...

  5. iOS开发之网络数据解析(一)--JSON解析简介

    前言:对服务器请求之后,返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 本篇随便先讲解JSON解析. 正文: 关于JSON: JSON是一种轻量级的数据格式,一般用于数据交互 ...

  6. ajax数据请求3(数组json格式)

    ajax数据请求3(数组json格式) <!doctype html> <html> <head> <meta charset="utf-8&quo ...

  7. Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...

  8. 导出数据excel表--身份证号后三位是0--〉还原

    导出数据excel表的身份证号后三位是0,怎么办? 数据导出前,在身份证号前加任意符号即可 例如: 结果

  9. 利用nodejs读取数据库数据生成树结构的json数据

    在做后台管理界面的时候,几乎少不了的一个结构就是树形结构,用来做菜单导航: 那么,最希望的就是树结构的所有数据都是读取的数据库,而不是直接代码当中写死,那我们就一步一步来看: 一,建表 字段通常包括: ...

随机推荐

  1. NovaMind使用教程

    NovaMind 使用教程 目前NovaMind在网络上基本没什么中文资料,它自带的"欢迎"导图也只有英文版本.导致很多朋友对这个工具的使用技巧不够了解.今天我把自己的使用心得整理 ...

  2. sql where 1=1

    这段代码应该是由程序(例如Java)中生成的,where条件中 = 之后的条件是通过 if 块动态变化的.例如: String sql="select * from table_name w ...

  3. 怎样解决MySQL数据库主从复制延迟的问题---流行网站的解决办法(转载)

    像Facebook.开心001.人人网.优酷.豆瓣.淘宝等高流量.高并发的网站,单点数据库很难支撑得住,WEB2.0类型的网站中使用MySQL的 居多,要么用MySQL自带的MySQL NDB Clu ...

  4. logstash配合filebeat监控tomcat日志

    环境:logstash版本:5.0.1&&filebeat 5.0.1 ABC为三台服务器.保证彼此tcp能够相互连接. Index服务器A - 接收BC两台服务器的tomcat日志 ...

  5. u盘安装centos

    1. 下载centos系统2. 使用UltraISO制作u盘启动.制作方法:http://jingyan.baidu.com/article/a378c960630e61b329283045.html ...

  6. 使用php模拟post的几种方法

    <?phpfunction file_get_contents_post($url,$post){$options=array('http'=>array('method'=>'PO ...

  7. wireshark抓包

    ip.addr==IP地址(192.168.1.100)&& http

  8. Workspace Cloning / Sharing in Jenkins

    http://lwandersonmusings.blogspot.com/2011/06/workspace-cloning-sharing-in-hudson.html   What's insi ...

  9. 广播发送者&广播接收者介绍

    1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context ...

  10. UIViewController启动过程

    流程:判断是否view属性为nil,如果为空,调用loadView方法,如果重写了loadView方法,那么从代码创建普通视图,如果没有重写并且有storyBoard或者xib文件,那么从storyB ...