【发布时间】:2021-08-01 06:08:33
【问题描述】:
我正在使用xlsxwriter将自定义类型的数据写入excel文件,但出现错误:
TypeError: Unsupported type <class '__main__.node'> in write()
代码:
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)
预期结果(将带有缩进空格的tree放在特定单元格中):
问题:
有人对此错误有经验吗?或建议?提前致谢!
更新:
我在print(tree)之后添加了以下部分,而不是使用worksheet.write(1, 0, tree)
def write_node(worksheet, row, col, tree, format = None):
return worksheet.write_string(row, col, str(tree), format)
worksheet.add_write_handler(tree.children, write_node)
# worksheet.add_write_handler(tree.node, write_node)
worksheet.write('A1', tree)
但是,出现如下错误:
Traceback (most recent call last):
File "/Users.../pythonProject/2021-05-16.py", line 137, in <module>
worksheet.add_write_handler(tree.children, write_node)
File "/Users.../pythonProject/lib/python3.9/site-packages/xlsxwriter/worksheet.py", line 1365, in add_write_handler
self.write_handlers[user_type] = user_function
TypeError: unhashable type: 'list'
【问题讨论】:
标签: python excel pandas xlsxwriter write