Saya menulis data dengan tipe yang ditentukan sendiri ke file excel dengan menggunakan xlsxwriter, tetapi mendapat kesalahan:

TypeError: Unsupported type <class '__main__.node'> in write()

Kode:

import xlsxwriter

class node(object):
    def __init__(self, value):
        self.value = value
        self.children = []
    def __repr__(self, level=0):
        ret = "\t"*level+repr(self.value)+"\n"
        for child in self.children:
            ret += child.__repr__(level+1)
        return ret
    def add(self, nod):
        self.children.append(node(nod))
        
leaf_1 = ['AA','BB','CC','DD']


workbook = xlsxwriter.Workbook('print_def.xlsx')
worksheet = workbook.add_worksheet()    

tree = parent = node(leaf_1[0]) #### code 1
parent.add(leaf_1[1])
parent.add(leaf_1[2])
print(tree)
worksheet.write(1, 0, tree)

Hasil yang diharapkan (letakkan tree dengan spasi indentasi di sel tertentu):

enter image description here

Pertanyaan:

Apakah ada yang punya pengalaman tentang kesalahan ini? atau saran? Terima kasih sebelumnya!

1
Melina 10 Mei 2021, 23:21

1 menjawab

Jawaban Terbaik

XlsxWriter tidak menulis tipe data arbitrer sehingga __repr__ di kelas Anda diabaikan.

Jika Anda ingin menulis tipe yang ditentukan pengguna, Anda perlu menggunakan mekanisme Xlsxwriter add_write_handler(). Lihat dokumentasi XlsxWriter di Menulis jenis yang ditentukan pengguna. Ini memiliki penjelasan rinci dan beberapa contoh.

Perhatikan juga, Anda harus terlebih dahulu memverifikasi bahwa Anda bisa membuat Excel menampilkan data seperti yang Anda inginkan. Anda perlu menambahkan format textwrap sebagai minimum.

2
jmcnamara 10 Mei 2021, 20:37