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);
    }
  • 相关阅读:
    LeetCode#34 Search for a Range
    Multiplication algorithm
    LeetCode#31 Next Permutation
    Spring boot之Hello World
    spring boot 简介
    分布式-网络通信-线程
    分布式-网络通信-协议
    分布式-架构图
    9.leetcode70-climbing stairs
    8.Leetcode69 Sqrt(x) 笔记
  • 原文地址:https://www.cnblogs.com/yanweifeng/p/12745587.html
Copyright © 2011-2022 走看看