为何openpyxl无法直接追加元组列表?
解决openpyxl sheet.append()追加元组列表报错问题
问题原因
openpyxl的sheet.append()方法要求传入单个行的数据(比如单个元组或列表),你直接传入包含多个元组的列表时,它会把每个元组当作单个单元格的内容尝试转换,所以触发错误:无法将('MARVIN VILLA', '440.00')转换为Excel内容。
解决方法
不需要显式写for循环的话,可以用map()函数批量处理每个元组:
wb = load_workbook(filename=fullPath) sh = wb['Ledger'] p = [('MARVIN VILLA', '440.00'), ('ALVIN D GARCIA', '250.00'), ('ALEX JONES', '350.00')] # 用map把每个元组传入append方法 list(map(sh.append, p)) wb.save(fullPath) wb.close()
如果觉得map写法不够直观,也可以用列表推导式实现隐式循环:
[sh.append(row) for row in p]
补充说明
openpyxl没有直接接收多行数据的append方法,必须逐行传入。上面两种写法都是规避显式for循环的方式,本质还是遍历每个元组作为单独行追加。
内容的提问来源于stack exchange,提问作者tanno oba
相关产品推荐
相关产品推荐

