Skip navigation


Kemarin saya sedang iseng membuka-buka StackOverflow dan menemukan pertanyaan ini Displaying CSV file content in Yii Framework’s CGridView.

Inti pertanyaannya adalah bagaimana menampilkan isi file CSV menggunakan GridView.

Cara mudahnya adalah dengan menggunakan CArrayDataProvider.

$file = fopen('test.csv', 'r');
$data = array();
while (($line = fgetcsv($file)) !== FALSE) {
    //$line is an array of the csv elements
    $data[] = $line;
}
fclose($file);
$columns = array();
foreach ($data[0] as $key => $value) {
    $columns[] = array(
        'name' => $key,
        'header' => $value,
    );
}
$data = array_slice($data, 1);
$dataProvider = new CArrayDataProvider($data, array(
    'keyField' => 0,
));
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $dataProvider,
    'columns' => $columns
));

Jika ingin menggunakan secara generik, kita bisa membuat kelas baru bernama CsvDataProvider.

class CsvDataProvider extends CArrayDataProvider {

    private $_columns = array();

    public function __construct($file, $config = array()) {
        $handler = fopen($file, 'r');
        $data = array();
        while (($line = fgetcsv($handler)) !== FALSE) {
            $data[] = $line;
        }
        fclose($handler);
        $this->_columns = array();
        foreach ($data[0] as $key => $value) {
            $this->_columns[] = array(
                'name' => $key,
                'header' => $value,
            );
        }
        $data = array_slice($data, 1);
        parent::__construct($data, array_merge($config, array(
            'keyField' => 0,
        )));
    }

    public function getColumns() {
        return $this->_columns;
    }
}

cara menggunakannya mudah

$dataProvider = new CsvDataProvider('file.csv');
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $dataProvider,
    'columns' => $dataProvider->getColumns(),
));

Tapi kode di atas belum bisa memfasilitasi sorting dan pagination. Kerugiannya juga adalah kinerja yang buruk jika digunakan pada berkas CSV berukuran sangat besar. Dan ada ide menarik untuk menggunakan library pemrosesan CSV yang hemat memori dan dengan fungsi lengkap. Nanti mungkin kalau sempat saya tuliskan penuhnya.

2 Comments

  1. Hi,
    Thanks for providing information on Yii framework. I think Yii is a fast, secure, high performance PHP framework for developing web 2.0 applications, and The Yii Development is top class, affordable and offer several features to build unique and quality applications.

  2. gimana caranya mengeksport tampilan cgridview ke csv gan? ane pake cara eExcelView , munculnya kaya gini gan http://ctrlv.in/480953. Bukannya export ke csv malah cuma nampilin aja ke gridviewnya.
    thanks before ya🙂


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: