Mungkin sudah banyak yang membahas tentang bagaimana mengimport file excel dengan menggunakan helper, yang mana pada artikel sebelumnya saya menjelaskan bagaimana mengeksport file excel. Tapi kali ini saya disini hanya sekedar sharing pengalaman saya, karena beberapa kali saya mencoba artikel import excel file saya mengalami kegagalan. Tidak tahu apakah mungkin saya yang terlalu bodoh atau sebab lainnya, tapi saya lebih cenderung ke yang pertama.
Baiklah tidak perlu panjang lebar, langsung saja kepokok permasalahan. Yang kita butuhkan adalah class excel reader, memang sudah banyak terupload di internet, tapi jika belum punya dapat di download di sini. Tempatkan file ini ke dalam folder library di dalam folder application.
Langkah berikutnya adalah membuat helper, sebelum membuat helper perlu dipelajari bagaimana cara membuat helper. Masukkan code berikut ke dalam helper:
if ( ! function_exists('xls_to_array'))
{
function xls_to_array($filename)
{
$ci =& get_instance();
$ci->load->library('Excel_reader');
$ci->excel_reader->setOutputEncoding('CP1251');
$ci->excel_reader->read($filename);
$data = $ci->excel_reader->sheets[0];
$kolom = $data['numCols'];
$baris = $data['numRows'];
$nilai = "";
for($i=1;$i<=$baris;$i++)
{
for($j=1;$j<=$kolom;$j++)
{
if($j == $kolom)
{
$sepa = "*";
}
else
{
$sepa = ",";
}
$nilai .= $data['cells'][$i][$j].$sepa;
}
}
return $nilai;
}
}
Dengan output nilai seperti diatas, maka output yang dihasilkan nantinya adalah berbentuk string. Jika menginginkan output berbentuk array, maka variabel $nilai tersebut dapat digantikan dengan $nilai[]. Kenapa saya menggunakan bentuk string? Karena bagi saya akan memudahkan ketika nantinya dimasukkan ke dalam query, karena hanya tinggal meng-explode hasil keluaran helper tersebut. Terdapat variabel sepa, yang bermaksud untuk memudahkan urutan antar.Tanda “*” berarti batas record dan tanda “,” berarti batas field, tanda ini dapat disesuaikan dengan kebutuhan. Untuk file lengkap helper dapat didownload di sini.
Untuk controllernya:
echo csv_to_array($filename);
Maka akan menghasilkan string isi dari file excel. Untuk langkah selanjutnya sama dengan apa yang saya jelaskan sebelumnya, yaitu melakukan pemecahan dengan menggunakan explode, batas tanda “*” merupakan tanda batas record dan tanda “,” adalah tanda batas field database. Semoga bermanfaat