如何在 CodeIgniter 中使用 CSV 导入库?

How to use CSV import library in CodeIgniter?

我在我的项目文件夹中加载了 csv 库。 使用 this link.
但我不知道我们应该将要上传的 csv 文件保存在哪里,我遇到了以下错误。

错误:

Call to a member function parse_file() on null

我的控制器代码:

function index()
{
    $this->load->library('Csvreader');
    $filePath = './E:/Test.csv';  
    $result =   $this->Csvreader->parse_file('$filePath');//path to csv file

    $data['csvData'] =  $result;
    $this->load->view('view_csv', $data);  
}

我的图书馆代码:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

    class CI_CsvReader {

        var $fields;            /** columns names retrieved after parsing */ 
        var $separator  =   ';';    /** separator used to explode each line */
        var $enclosure  =   '"';    /** enclosure used to decorate each field */

        var $max_row_size   =   4096;    /** maximum row size to be used for decoding */

        function parse_file($p_Filepath) 
        {
            $file           =   fopen($p_Filepath, 'r');
            $this->fields   =   fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
            $keys_values        =   explode(',',$this->fields[0]);

            $content            =   array();
            $keys           =   $this->escape_string($keys_values);

            $i  =   1;
            while(($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) 
            {
                if( $row != null ) { // skip empty lines
                    $values         =   explode(',',$row[0]);
                    if(count($keys) == count($values)){
                        $arr            =   array();
                        $new_values =   array();
                        $new_values =   $this->escape_string($values);
                        for($j=0;$j<count($keys);$j++){
                            if($keys[$j]    !=  ""){
                                $arr[$keys[$j]] =   $new_values[$j];
                            }
                        }
                        $content[$i]    =   $arr;
                        $i++;
                    }
                }
            }
            fclose($file);
            return $content;
        }

        function escape_string($data)
        {
            $result =   array();
            foreach($data as $row){
                $result[]   =   str_replace('"', '',$row);
            }
            return $result;
        }   
    }
?>

您是否尝试过从临时位置访问。我的意思是使用如下代码

$result =   $this->Csvreader->parse_file($_FILES['file_field_name']['tmp_name']);

这样,如果您不需要存储文件,您可以通过不存储文件来节省服务器 space。

库函数是正确的,但我在控制器中出错,我没有正确定义文件的路径。 我的答案是:

$this->load->library('csvreader');
$result =   $this->csvreader->parse_file('E:\Test.csv');
$data['csvData'] =  $result;
$this->load->view('view_csv', $data);