如何在CodeIgniter中使用CSV导入库? [英] How to use CSV import library in CodeIgniter?

查看:139
本文介绍了如何在CodeIgniter中使用CSV导入库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在项目文件夹中加载了csv库. 使用此链接.
但是我不知道应该将csv文件保存在哪里,但出现了以下错误.

I have load csv library in my project folder. Using this link.
But I don't know where we should keep the csv file to upload and I got below error.

错误:

在null上调用成员函数parse_file()

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;
        }   
    }
?>

推荐答案

库函数是正确的,但是我在控制器中犯了错误,并且我没有正确定义文件的路径. 我的答案是:

The library function is correct but i made mistake in controller and i didn't define the path of the file correctly. My Answer is :

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

这篇关于如何在CodeIgniter中使用CSV导入库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆