Di dunia kerja, data tidak datang sebagai matriks rapi melainkan sebagai workbook Excel: rekap bulanan dari tim keuangan, daftar stok dari gudang, hasil survei dari pemasaran. MATLAB dapat membaca dan menulis berkas .xls/.xlsx secara langsung — memilih sheet tertentu, mengambil rentang sel, lalu menuliskan hasil analisis ke sheet baru. Chapter ini membahas:
- Peta fungsi baca-tulis Excel:
readtable,readmatrix,readcell,writetable,writematrix - Memilih sheet dan rentang sel dengan name-value
SheetdanRange - Fungsi warisan
xlsread/xlswriteyang kini berstatus deprecated - Alur kerja lengkap: baca sheet → analisis → tulis sheet hasil
Peta Fungsi Baca-Tulis Excel #
| Fungsi | Sejak | Hasil / masukan | Kegunaan |
|---|---|---|---|
readtable | R2013b | table bernama kolom | baca sheet dengan header dan tipe campuran |
readmatrix | R2019a | matriks numerik | baca sheet berisi angka saja |
readcell | R2019a | cell array | baca sel apa adanya — angka, teks, kosong |
writetable | R2013b | menerima table | tulis tabel + header ke sheet |
writematrix | R2019a | menerima matriks | tulis angka ke sheet |
xlsread/xlswrite | lama | matriks | warisan; not recommended |
Mekanisme umumnya seragam: ekstensi berkas menentukan format, argumen name-value Sheet memilih lembar kerja, dan Range memilih wilayah sel. Kombinasi readtable untuk masukan dan writetable untuk keluaran adalah pasangan yang disarankan dokumentasi MATLAB.
Membaca Sheet Tertentu dengan readtable #
Masalah nyatanya: workbook nyata punya banyak sheet dan sering hanya satu yang berisi data yang kita butuhkan. Mekanismenya: readtable(namaBerkas, Sheet="Penjualan") membuka sheet bernama Penjualan, mendeteksi header di baris pertamanya, lalu membangun table dengan satu variabel per kolom:
T = readtable("data_penjualan.xlsx", Sheet="Penjualan");
totalPendapatan = sum(T.unit .* T.harga);
fprintf('total pendapatan: Rp%d\n', totalPendapatan);Output yang Dihasilkan (tampilan T di Command Window MATLAB):
T =
6×3 table
bulan unit harga
_____ ____ ______
1 120 15000
2 135 15000
3 98 16000
4 150 16000
5 142 17000
6 128 17000Mari kita bedah baris-baris kode di atas:
- Baris 1 (
readtable(..., Sheet="Penjualan")): argumenSheetmenerima nama sheet sebagai teks atau nomor urutnya (misalnyaSheet=2). Tanpa argumen ini,readtablemembaca sheet pertama. - Baris 2 (
T.unit .* T.harga): variabel tabel diakses dengan dot notation —T.unitmengeluarkan vektor kolom 6×1 siap dihitung, tanpa perlu tahu posisi kolomnya. - Baris 3 (
fprintf): angka total pendapatan (Rp12.383.000) dicetak; bagian tampilanThanya konteks MATLAB.
Rentang Sel dengan Range #
Data sering tidak mulai di sel A1 — judul laporan menempati baris atas. Mekanismenya: name-value Range menerima notasi A1 dalam tiga bentuk: sel awal "A5" (pembacaan berhenti otomatis di baris kosong pertama), rentang persegi "A5:C11", atau named range Excel "dataKu":
T = readtable("data_penjualan.xlsx", Sheet="Penjualan", Range="A4:C10");
A = readmatrix("data_penjualan.xlsx", Sheet="Penjualan", Range="B4:C10");Output yang Dihasilkan: tidak ada — kedua panggilan hanya mengisi variabel T (6 baris × 3 kolom dari rentang A4:C10) dan A (matriks 6×2 dari kolom B-C saja, tanpa nama kolom).
Penjelasan sintaksisnya: readmatrix mengembalikan matriks numerik murni sehingga cocok untuk blok angka tanpa header; bila rentang itu memuat sel campuran (teks di tengah angka), readcell mengambil seluruhnya apa adanya sebagai cell array dan sel kosong menjadi missing di MATLAB.
Menulis Excel dengan writetable dan writematrix #
Hasil analisis perlu kembali ke Excel agar tim lain bisa membukanya tanpa MATLAB. Mekanismenya: writetable(T, namaBerkas, Sheet=..., Range=...) menulis tabel lengkap baris header ke sheet bernama sama — sheet baru dibuat bila belum ada:
ringkasan = table("metode", ["total"; "rata-rata"], ...
"nilai", [12383000; 128.83], ...
"VariableNames", {"metode", "nilai"});
writetable(ringkasan, "hasil_analisis.xlsx", Sheet="Ringkasan");Penjelasan sintaksisnya: konstruktor table(...) membangun tabel 2×2 dengan nama kolom lewat "VariableNames"; writetable membuat sheet baru bernama Ringkasan di hasil_analisis.xlsx dan menempatkan tabelnya mulai sel A1. Untuk angka murni, writematrix(A, "hasil.xlsx", Sheet="Data") menulis matriks tanpa header; name-value Range="A5" menggeser posisi tulis ke sel tertentu.
Warisan: xlsread dan xlswrite #
Pasangan xlsread/xlswrite adalah cara klasik (sebelum R2013b) untuk berkomunikasi dengan Excel: [num, txt, raw] = xlsread('data.xlsx', 'Sheet1', 'A1:C7') memisahkan angka, teks, dan isi mentah ke tiga keluaran. Dokumentasi MATLAB kini menandai keduanya sebagai not recommended karena readtable/readmatrix lebih cepat, lebih aman, dan lebih kaya opsi. Kode lama yang kita temui tetap sah dibaca — hanya saja proyek baru sebaiknya memakai fungsi modern.
Alur Kerja Lengkap: Excel ke Analisis ke Hasil #
Alur kerja Excel tidak berdiri dari satu panggilan, melainkan rangkaian: baca sheet data, hitung ringkasan, tulis sheet hasil. Diagram berikut memetakan alurnya:
Berkas contoh.m menguji alur yang sama dalam bentuk analogi CSV — menulis “sheet” data ber-header, membacanya kembali lewat guard modern/klasik, menganalisis, lalu menulis “sheet” ringkasan:
if exist('readmatrix') ~= 0
A = readmatrix('data_penjualan.csv'); % MATLAB: juga berlaku untuk .xlsx
fprintf('dibaca dengan readmatrix\n');
else
A = csvread('data_penjualan.csv', 1, 0); % padanan: lewati baris header
fprintf('dibaca dengan csvread\n');
end
fprintf('ukuran data: %d baris x %d kolom\n', size(A, 1), size(A, 2));
pendapatan = sum(A(:, 2) .* A(:, 3));
fprintf('total pendapatan: Rp%d\n', pendapatan);
fprintf('unit tertinggi : %d (bulan %d)\n', max(A(:, 2)), A(A(:, 2) == max(A(:, 2)), 1));Output yang Dihasilkan (jalur klasik yang aktif saat diuji di Octave — nilai identik di jalur MATLAB karena datanya sama):
dibaca dengan csvread
ukuran data: 6 baris x 3 kolom
total pendapatan: Rp12383000
unit tertinggi : 150 (bulan 4)Mari kita bedah baris-baris kode di atas:
- Baris 1 (
exist('readmatrix') ~= 0): guard memilihreadmatrix(yang berlaku juga untuk.xlsx) di MATLAB dancsvreaddengan offset header di Octave. - Baris 9 (
A(A(:, 2) == max(A(:, 2)), 1)): logical indexing menemukan baris unit maksimum lalu mengambil kolom bulannya — pola pencarian yang kita kuasai dari section Pengolahan Data. - Baris 11 (
sum(A(:, 2) .* A(:, 3))): total pendapatan dihitung dari kolom unit × harga — nilai yang sama dengan jalurreadtable+T.unit .* T.hargadi MATLAB.
Ringkasan #
Excel dibaca dengan readtable (kolom bernama, tipe campuran), readmatrix (angka murni), atau readcell (sel apa adanya); ditulis kembali dengan writetable/writematrix. Argumen Sheet memilih lembar, Range memilih wilayah sel dalam notasi A1. Pasangan warisan xlsread/xlswrite masih ditemui di kode lama tetapi tidak lagi disarankan. Alur baca–analisis–tulis tetap sama bentuknya di CSV — tinggal berganti ekstensi dan argumen. Format pertukaran berikutnya lebih ringan dan berbasis web: JSON.