• PHP处理数据--excel与scv与json


    今天要处理两个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); 
        } 
      
    ?>
  • 相关阅读:
    flash 3d基础学习
    3d中的镜头
    [转]Android Canvas 切割 clipRect
    绘制球形
    绘制圆筒
    stage3d学习笔记1
    (转)Region.Op效果解析
    游戏中的镜头
    无向网的最小生成树——Prim算法(转)
    最短路径之——Dijkstra算法(转)
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/5358469.html
Copyright © 2020-2023  润新知