PHP操作csv文件导入+导出

一、PHP导入csv文件

    /**
     * csv_get_lines 读取CSV文件中的某几行数据
     * @param $csvfile csv文件路径
     * @param $lines 读取行数
     * @param $offset 起始行数
     * @return array
     * */
    function csv_get_lines($csvfile, $lines, $offset = 0) {
        if(!$fp = fopen($csvfile, 'r')) {
            return false;
        }
        $i = $j = 0;
        while (false !== ($line = fgets($fp))) {
            if($i++ < $offset) {
                continue; 
            }
            break;
        }
        $data = array();
        while(($j++ < $lines) && !feof($fp)) {
            $data[] = fgetcsv($fp);
        }
        fclose($fp);
        return $data;
    }

使用导出csv函数获取到二维数组数据,数组的每一个单元都是一行数据,可以将导出的数据保存进数据库。

二、PHP导出csv文件

    /** 
     * 导出数据到CSV文件 
     * 
     * @param array $data 二维数组(模拟数据表记录) 
     * @param array $titleList 标题数组列表 
     * @param string $fileName CSV文件名 
     */  
    function csv_export(&$data, $titleList = array(), $fileName = '')  
    {  
        ini_set("max_execution_time", "3600");  
        $csvData = '';  
      
        // 标题  
        $nums = count($titleList);  
        for ($i = 0; $i < $nums - 1; $i++)  
        {  
            $csvData .= '"' . $titleList[$i] . '",';  
        }  
        $csvData .= '"' . $titleList[$nums - 1] . "\"\r\n";  
      
        foreach ($data as $key => $row)  
        {  
            $i = 0;  
            foreach ($row as $_key => $_val)  
            {  
                $_val = str_replace("\"", "\"\"", $_val);  
                if ($i < ($nums - 1))  
                {  
                    $csvData .= '"' . $_val . '",';  
                }  
                elseif ($i == ($nums - 1))  
                {  
                    $csvData .= '"' . $_val . "\"\r\n";  
                }  
                $i++;  
            }  
            unset($data[$key]);  
        }  
      
        $csvData = mb_convert_encoding($csvData, "cp936", "UTF-8");  
        $fileName = empty($fileName) ? date('Y-m-d-H-i-s', time()) : $fileName;  
        $fileName = $fileName . '.csv';  
        header("Content-type:text/csv;");  
        header("Content-Disposition:attachment;filename=" . $fileName);  
        header('Cache-Control:must-revalidate,post-check=0,pre-check=0');  
        header('Expires:0');  
        header('Pragma:public');  
        echo $csvData;  
        die();  
    }
获取到要导出的二维数组数据,然后组装标题数组,csv文件名,就可以执行函数进行导出操作,会自动弹出下载框。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值