Materi
Sel berumus di berkas Excel menyimpan dua hal: teks rumusnya, misalnya =SUM(D2:D4), dan nilai hasil hitungan terakhir yang ditulis Excel saat berkas disimpan. load_workbook tanpa argumen tambahan memberi teks rumusnya. load_workbook(..., data_only=True) memberi nilai tersimpannya. Atribut cell.data_type bernilai "f" untuk sel berumus dan cell.coordinate memberi alamatnya, misalnya "D5".
wb = load_workbook("kas.xlsx")
print(wb.active["D5"].value) # =SUM(D2:D4)
wb2 = load_workbook("kas.xlsx", data_only=True)
print(wb2.active["D5"].value) # 1250000 bila terakhir disimpan Excelopenpyxl tidak pernah menghitung rumus. Akibatnya berkas yang dibuat skrip dan belum pernah dibuka lalu disimpan di Excel tidak punya nilai tersimpan sama sekali: data_only=True membaca None untuk setiap sel berumus. Berkas latihan di kelas ini dibuat oleh skrip, jadi kamu akan melihat None itu langsung. Jalan yang aman saat angkanya dibutuhkan adalah menghitung ulang di Python dari sel data, bukan mempercayai sel total.
Kapan dipakai: memeriksa laporan kiriman cabang — apakah kolom total benar-benar rumus atau angka yang diketik tangan, dan apakah rentangnya mencakup semua baris. Daftar alamat sel berumus menjawab keduanya tanpa membuka Excel.
Kesalahan yang tidak memunculkan pesan
Kesalahan di pelajaran ini sunyi. Menjumlahkan kolom total yang terbaca "=B2+C2" berhenti dengan TypeError: can only concatenate str (not "int") to str, tetapi menyalin nilai None ke laporan lain tidak memunculkan pesan apa pun dan hasilnya kosong.