Python+Openpyxl批量读取Excel报价文件时型号数据重复问题求助
问题原因
你定义的models是Quote类的类属性,所有Quote实例会共享同一个列表对象,而不是每个实例拥有独立的型号存储空间。
你给quote.number、quote.name等基础属性赋值时,是直接给当前实例绑定了独立的实例属性,会覆盖类属性的查找逻辑,所以每份报价的基础信息读取正常。但你没有给quote.models重新赋值,只是调用了它的append方法追加数据,所有实例的操作实际上都作用在同一个全局共享的列表上,最终表现为所有报价的型号列表完全一致。
修复方案
修改类定义,把原来的类属性全部改为在__init__方法中初始化的实例属性,保证每个实例拥有独立的存储空间:
class Model: def __init__(self): self.SKU = None self.cost = None self.qty = None self.qty_remaining = None class Quote: def __init__(self): self.name = None self.number = None self.start_date = None self.end_date = None # 每个实例初始化独立的型号列表 self.models = []
额外注意点
你描述的文件格式里标注开始日期存于A4单元格、结束日期存于A5单元格,但当前代码读取的是A6和A7单元格,需要确认是否为笔误,避免日期读取错误。
内容的提问来源于stack exchange,提问作者Will Scott
相关产品推荐
相关产品推荐

