Manipulasi file CSV pada Codeigniter dengan CSVReader

Cara yang paling mudah untuk manipulasi file CSV pada codeigniter adalah dengan menggunakan class CSVReader buatan Pierre-Jean Turpeau yang ada pada link disini [CSVReader Codeigniter]. Bagaimana cara implementasi-nya ?

Copy dulu aja code CSVReader tersebut ini :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CSVReader Class
 *
 * $Id: csvreader.php 54 2009-10-21 21:01:52Z Pierre-Jean $
 *
 * Allows to retrieve a CSV file content as a two dimensional array.
 * Optionally, the first text line may contains the column names to
 * be used to retrieve fields values (default).
 *
 * Let's consider the following CSV formatted data:
 *
 *        "col1";"col2";"col3"
 *         "11";"12";"13"
 *         "21;"22;"2;3"
 *
 * It's returned as follow by the parsing operation with first line
 * used to name fields:
 *
 *         Array(
 *             [0] => Array(
 *                     [col1] => 11,
 *                     [col2] => 12,
 *                     [col3] => 13
 *             )
 *             [1] => Array(
 *                     [col1] => 21,
 *                     [col2] => 22,
 *                     [col3] => 2;3
 *             )
 *        )
 *
 * @author        Pierre-Jean Turpeau
 * @link        http://www.codeigniter.com/wiki/CSVReader
 */

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 */
   
    /**
     * Parse a file containing CSV formatted data.
     *
     * @access    public
     * @param    string
     * @param    boolean
     * @return    array
     */

    function parse_file($p_Filepath, $p_NamedFields = true) {
        $content = false;
        $file = fopen($p_Filepath, 'r');
        if($p_NamedFields) {
            $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
        }
        while( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) {            
            if( $row[0] != null ) { // skip empty lines
                if( !$content ) {
                    $content = array();
                }
                if( $p_NamedFields ) {
                    $items = array();
                   
                    // I prefer to fill the array with values of defined fields
                    foreach( $this->fields as $id => $field ) {
                        if( isset($row[$id]) ) {
                            $items[$field] = $row[$id];    
                        }
                    }
                    $content[] = $items;
                } else {
                    $content[] = $row;
                }
            }
        }
        fclose($file);
        return $content;
    }
}
?>

Setelah dicopy, buat file baru dengan nama csvreader.php pada folder library codeigniter. Setelah dibuat, panggil saja pada controller atau model sesuai kebutuhan untuk manipulasi file CSV.

Load file library csvreader.php

1
$this->load->library('csvreader');

Setelah itu, cari atau buat file CSV yang akan dimanipulasi. Sesuai yang ada dikomentar file csvreader.php bahwa format nya seperti:

“col1″;”col2″;”col3”
“11”;”12″;”13″
“21;”22;”2;3”

Kalau saya misalkan lagi

“no_pegawai”;”nama_pegawai”;”telp”
“009090”;”adiputra”;”0218818237″
“009191”;”riana”;”0022118888″
“009292”;”bimo”;”0099132413″

Saya anggap nama file csv diatas adalah karyawan.csv. Lalu cara pemanggilan manipulasi file tersebut adalah :

1
2
3
4
$data_upload_csv = $this->csvreader->parse_file('karyawan.csv');
foreach($data_upload_csv as $item):
  echo "Nama ".$item['nama_pegawai']. " dengan nip ".$item['no_pegawai']." dan telp ". $item['telp']." <br />";
endforeach;

Dan akan menampilkan 3 nama tersebut. Manipulasi yang lain, kita bisa proses ke model untuk dimasukan ke database. Sampai disini, proses manipulasi file CSV pada Codeigniter dengan CSVReader selesai. Semoga bisa ngebantu.

2 comments

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: