Untuk keperluan data science atau yang lainnya, sering kita memerlukan tool untuk mengkonversi data dari format tertentu ke format lainnya. Tidak terkecuali data file Excel atau spreadsheet ke JSON. Pada tutorial ini, saya akan mencoba memaparkan bagaimana cara membuat script PHP untuk mengkonversi data yang tersimpan di file Excel ke JSON, atau mengenerate JSON dari data yang bersumber dari Excel. Sebenarnya di internet terdapat beberapa situs yang menyediakan tool untuk konversi ini, namun jika kita bisa membuatnya sendiri tentunya akan bisa lakukan customize terhadap struktur JSON yang dihasilkan. JSON (JavaScript Object Notation) sering digunakan untuk merepresentasikan sebuah entitas data karena memiliki kelebihan antara lain: strukturnya lebih sederhana, file size lebih kecil dibandingkan XML, dan tidak perlu menggunakan parser khusus untuk mengolahnya. Adapun file data spreadsheet, Excel misalnya, merupakan format data terstruktur (structured data) dalam bentuk tabel yang cukup jamak di sekitar kita.
Library PHPSpreadSheetUntuk keperluan konversi data dari file Excel ke JSON dengan PHP, kita membutuhkan library untuk membaca data Excelnya. Dalam hal ini, kita akan menggunakan library PHPSpreadSheet, di mana library ini merupakan pengembangan dari PHPExcel yang saat ini sudah discontinued sejak 5 tahun yang lalu. Library PHPSpreadSheet dapat diinstall ke dalam direktori kerja dengan menggunakan composer, melalui perintah composer require phpoffice/phpspreadsheet atau apabila dibutuhkan mengunduh documentationnya juga, bisa ditambahkan parameter seperti berikut ini composer require phpoffice/phpspreadsheet --prefer-sourceProses instalasi PHPSpreadSheet via composer Setelah proses instalasi selesai, secara otomatis akan muncul folder ‘vendor‘ di direktori web yang sudah kita siapkan. Menyiapkan File Data ExcelSelanjutnya, misalkan kita memiliki file data Excel (nama file data.xlsx) seperti pada tampilan di bawah ini. Dari data file Excel di atas, nantinya kita akan generate JSON dengan struktur sebagai berikut. Struktur JSON yang akan dihasilkanIde Pembuatan ScriptIde dasar membuat script PHP untuk mengenerate JSON dari file Excel adalah sebagai berikut:
Implementasi ke Script PHPBerdasarkan ide penyelesaian di atas, kita coba implementasikan ke dalam script PHP. <?php // memanggil library phpspreadsheet require 'vendor/autoload.php'; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(TRUE); // setting nama file yg akan dibaca $spreadsheet = $reader->load("data.xlsx"); // data worksheet yg akan dibaca ada di active sheet $worksheet = $spreadsheet->getActiveSheet(); // mendapatkan maks nomor baris data $highestRow = $worksheet->getHighestRow(); // mendapatkan maks kolom data $highestColumn = $worksheet->getHighestColumn(); // mendapatkan nama-nama kolom data // membaca value yang ada di cell: A1, B1, ..., E1 // dan simpan ke dalam array $colsName $colsName = array(); for($col='A'; $col<=$highestColumn; $col++){ $colsName[] = $worksheet->getCell($col . 1)->getValue(); } // inisialisasi array untuk menampung semua data $dataAll = array(); // proses membaca data baris-perbaris // dimulai dari baris ke-2, karena baris ke-1 berisi nama kolom tabel for($row=2; $row<=$highestRow; $row++){ // inisialisasi array untuk data perbaris $dataRow = array(); $i = 0; // untuk setiap baris data, baca value tiap kolom cell // misal untuk baris ke-2, cell yang dibaca: A2, B2, ..., E2 // misal untuk baris ke-3, cell yang dibaca: A3, B3, ..., E3 // dst ... for($col='A'; $col<=$highestColumn; $col++){ // setiap value digabung menjadi satu // dan tambahkan ke array $dataRow $dataRow += array($colsName[$i] => $worksheet->getCell($col . $row)->getValue()); $i++; } // setelah didapat data array perbaris // tambahkan ke $dataAll $dataAll[] = $dataRow; } // convert ke json lalu tampilkan echo json_encode($dataAll); ?> Penjelasan script:
Mudah bukan membuatnya? Dari ide di atas, silakan dikembangkan/ dicustom sendiri sesuai kebutuhan Anda. Semoga bisa dipahami dan bermanfaat. Bagikan artikel ini jika bermanfaat ! |