Bekerja dengan Manajemen Spreadsheet
Bekerja dengan Manajemen Spreadsheet
Manajemen spreadsheet mencakup permukaan objek sehari-hari dari crate: lembar kerja, koleksi sel, nilai bertipe, formula, gaya, dan fitur struktural yang membuat buku kerja dapat digunakan. Titik masuknya selalu berupa Workbook.
Worksheets
Lembar dikelola melalui koleksi lembar kerja buku kerja — akses baca melalui get_worksheets, perubahan melalui get_worksheets_mut. Lembar diakses dengan indeks (get(0)) atau nama (get_by_name), diubah namanya dengan set_name, dan ditambahkan dengan add_worksheet:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Data")?;
}Akses Sel dan Nilai Bertipe
Sel diakses dengan gaya A1 atau secara numerik. get_by_index(row, column) cocok untuk tata letak yang dihasilkan:
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Month")?;
for month in 1..=12_u32 {
cells
.get_by_index(month, 0)
.put_value_string(format!("Month {month}"))?;
}Saat membaca kembali, display_string_value mengembalikan teks tampilan dan value_type melaporkan tipe yang disimpan.
Formula dengan Hasil Cache
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;Nilai cache adalah apa yang ditampilkan Excel sebelum perhitungan ulang pertama — sediakan nilai tersebut agar pengguna file melihat hasil yang benar secara langsung.
Styling
CellStyle menggabungkan Font, Fill, dan Borders; StyleFlag mengontrol aspek gaya mana yang diterapkan pembaruan, sehingga format yang ada dipertahankan di mana Anda tidak menimpanya. NumberFormat mengatur cara nilai ditampilkan.
Pengaturan Halaman dan Navigasi
PageSetup mengelola tata letak cetak: PaperSizeType, PageOrientationType, dan margin. FreezePane menjaga baris header tetap terlihat saat menggulir, dan visibilitas baris serta kolom menggunakan VisibilityType.
Struktur: Tabel, Nama, Komentar, Tautan Hiper
ListObjectmengubah rentang menjadi tabel terstruktur dengan gayaTableStyleTypedan baris totalTotalsCalculation.DefinedNamedanDefinedNameCollectionmengelola rentang bernama.Comment/CommentCollectiondanHyperlink/HyperlinkCollectionmencakup anotasi dan navigasi.
Tips dan Praktik Terbaik
- Simpan peminjaman mutable (
get_worksheets_mut,get_cells_mut) di dalam blok scope; simpan workbook setelah blok ditutup. - Gunakan
get_by_indexuntuk loop dan tata letak yang dihasilkan; nama A1 untuk posisi tetap. - Terapkan gaya dengan
StyleFlagsehingga pemformatan yang tidak terkait tidak terpengaruh. - Beri nama rentang penting dengan
DefinedNamealih-alih mengkodekan alamat secara keras.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Kesalahan peminjaman saat menyimpan workbook | Peminjaman worksheet mutable masih hidup | Tutup blok lingkup sebelum memanggil save |
| Formula menunjukkan 0 di Excel | Tidak ada nilai cache yang disediakan | Gunakan put_formula_with_cached_value dengan hasil yang diharapkan |
| Lembar tidak ditemukan | Nama tidak cocok | Alamat berdasarkan indeks atau periksa ejaan set_name |
FAQ
Bagaimana cara menambahkan lembar kerja kedua?
Panggil add_worksheet pada buku kerja, lalu ambil melalui koleksi lembar kerja dengan indeks atau nama.
Apakah saya dapat membaca dan menulis dalam satu proses?
Ya — muat dengan Workbook::load_xlsx, ubah melalui get_worksheets_mut, dan save ke jalur yang sama atau baru.
Apakah setter bertipe mengonversi nilai?
Tidak ada konversi yang diterapkan: setiap setter put_value_* menyimpan tipe aslinya; display_string_value menampilkan teks tampilan saat dibaca.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Workbook.add_worksheet | Tambahkan lembar ke buku kerja |
Worksheet.set_name | Ganti nama lembar |
Worksheet.get_cells_mut | Koleksi sel Mutable |
CellMut.put_value_string | Pengatur string bertipe |
CellMut.put_formula_with_cached_value | Rumus plus hasil yang di-cache |
CellStyle | Pemformatan font, isi, dan batas |
StyleFlag | Memilih aspek gaya yang diterapkan |
PageSetup | Cetak dan tata letak halaman |
ListObject | Tabel terstruktur |