zoukankan      html  css  js  c++  java
  • # Csv数据导入导出

    Csv数据导入导出

    标签(空格分隔): php

    代码

    public function customerCsvHandler()
    {
        print("开始处理..." . PHP_EOL);
        $time = time();
        $map = [];
        $descKey = 0;
        ini_set('memory_limit', '1024M');
        $handle = fopen("./Upload/客源.csv", 'rb');
        if ($handle === false) {
            exit("文件打开失败" . PHP_EOL);
        }
        while (feof($handle) === false) {
            $value =  fgetcsv($handle);
            $value = eval('return ' . iconv('gbk', 'utf-8', var_export($value, true)) . ';');
            if (trim($value[0]) == "类型") {
                $descKey = array_search("备注", $value);
                $map[] = $value;
            } elseif (trim($value[0]) == "求购" || trim($value[0]) == "求租" ) {
                $map[] = $value;
            } else {
                $end = array_pop($map);
                $end[$descKey] .= implode(";", $value);
                $map[] = $end;
            }
            unset($value);
        }
        fclose($handle);
        print("数据处理成功 开始导出..." . PHP_EOL);
        $header = $map[0];
        unset($map[0]);
        $this->writeCsv(array_values($map), $header, "./Upload/客源_new.csv");
        print("导出成功: " . "./Upload/客源_new.csv"  . PHP_EOL);
        print("执行时间/s: ". (time() - $time) . PHP_EOL);
    }
    
    
    /**
     * 房源处理
     * @command php cli.php Crontab/CsvDataHandler/houseCsvHandler
     */
    public function houseCsvHandler()
    {
        print("开始处理..." . PHP_EOL);
        $time = time();
        $map = [];
        $descKey = 0;
        ini_set('memory_limit', '1024M');
        $handle = fopen("./Upload/房源.csv", 'rb');
        if ($handle === false) {
            exit("文件打开失败" . PHP_EOL);
        }
        while (feof($handle) === false) {
            $value =  fgetcsv($handle);
            $value = eval('return ' . iconv('gbk', 'utf-8', var_export($value, true)) . ';');
            if (trim($value[0]) == "类型") {
                $descKey = array_search("备注", $value);
                $map[] = $value;
            } elseif (trim($value[0]) == "出租" || trim($value[0]) == "出售" ) {
                $map[] = $value;
            } else {
                $end = array_pop($map);
                $end[$descKey] .= implode(";", $value);
                $map[] = $end;
            }
            unset($value);
        }
        fclose($handle);
        print("数据处理成功:开始导出数据" . PHP_EOL);
        $header = $map[0];
        unset($map[0]);
        $this->writeCsv(array_values($map), $header, "./Upload/房源_new.csv");
        print("导出成功: " . "./Upload/房源_new.csv"  . PHP_EOL);
        print("执行时间/s: ". (time() - $time) . PHP_EOL);
    
    }
    
    public function writeCsv(&$data, $header, $fileName)
    {
        $fp = fopen($fileName, 'w');
        var_dump($fp);
        foreach ($header as $key => $value) {
            $header[$key] = iconv('utf-8', 'gbk', $value);
        }
        fputcsv($fp, $header);
        $num = 0;
        $limit = 100000;
        $count = count($data);
        for ($i = 0; $i < $count; $i++) {
            $num++;
            if ($limit == $num) {
                ob_flush();
                flush();
                $num = 0;
            }
            $row = $data[$i];
            foreach ($row as $key => $value) {
                $row[$key] = iconv('utf-8', 'gbk', $value);
            }
            fputcsv($fp, $row);
        }
    }
    
    
    public function test()
    {
        $handle = fopen("./Upload/房源.csv", 'rb');
        while (feof($handle) === false) {
            yield fgetcsv($handle);
        }
        fclose($handle);
    }
  • 相关阅读:
    【转】 矩阵构造方法
    CODEVS1187 Xor最大路径 (Trie树)
    POJ2001 Shortest Prefixes (Trie树)
    CODEVS1079 回家 (最短路)
    CODEVS2144 砝码称重2 (哈希表)
    CODEVS1380 没有上司的舞会 (树形DP)
    JAVA 多态和异常处理作业——动手动脑以及课后实验性问题
    再读大道之简第七章第八章
    JAVA 接口与继承作业——动手动脑以及课后实验性问题
    再读大道至简第六章
  • 原文地址:https://www.cnblogs.com/yanweifeng/p/12745587.html
Copyright © 2011-2022 走看看