Search code examples
phpcsvcodeigniter-2helperxls

CSV Import Library for CodeIgniter


Need to implement csv or xls import into Application created using CodeIgniter. Is there any library for this? Any suggestion appreciated.


Solution

  • Here is an easy way to do this. I don't know what people do but i use this

    This is my csv reader library

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
    
    class 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;
        }   
    }
    ?> 
    

    And controller method

    function readExcel()
    {
            $this->load->library('csvreader');
            $result =   $this->csvreader->parse_file('Test.csv');
    
            $data['csvData'] =  $result;
            $this->load->view('view_csv', $data);  
    }
    

    And this is view

    <table cellpadding="0" cellspacing="0" width="100%">
        <tr>
                <td width = "10%">ID</td>
                <td width = "20%">NAME</td>
                <td width = "20%">SHORT DESCRIPTION</td>
                <td width = "30%">LONG DESCRIPTION</td>
                <td width = "10%">STATUS</td>
                <td width = "10%">PARENTID</td>
        </tr>
    
                <?php foreach($csvData as $field){?>
                    <tr>
                        <td><?php echo $field['id']?></td>
                        <td><?php echo $field['name']?></td>
                        <td><?php echo $field['shortdesc']?></td>
                        <td><?php echo $field['longdesc']?></td>
                        <td><?php echo $field['status']?></td>
                        <td><?php echo $field['parentid']?></td>
                    </tr>
                <?php }?>
    </table>
    

    Reference Here