You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Excel库存自动更新:解决单元格遍历与计数问题

问题修正与代码实现

错误原因分析

你遇到的cell is not iterable错误,是因为ws[char + str(row)]获取的是单个单元格对象,而非可迭代的单元格范围,所以不能用for x in crossover_cells来遍历。

功能实现思路

  1. 解析输入的商品缩写:从merchpurchased中拆分出商品类型(如h代表连帽衫)、颜色(如r代表红色)、尺码(如l转为大写L)
  2. 遍历目标行范围,匹配对应类型、颜色、尺码的记录
  3. 找到匹配的尺码单元格后,向右偏移2列定位到「已售数量」列,将该单元格数值+1(处理空值默认设为0)
  4. 最后保存工作簿,确保修改生效

修正后的完整代码

from openpyxl import load_workbook
from openpyxl.utils import get_column_letter

# 加载工作簿,data_only=True确保读取单元格的计算后数值
wb = load_workbook('C:/Users/Angela Shen/Downloads/Python gc merch project.xlsx', data_only=True)
ws = wb.active
 
def inventory_update(merchpurchased):
    # 输入验证:确保缩写长度符合要求且包含连帽衫标识
    if len(merchpurchased) < 3 or 'h' not in merchpurchased.lower():
        print("无效输入,请输入格式正确的商品缩写(如hrl代表连帽衫、红色、L码)")
        return
    
    # 解析缩写:拆分类型、颜色、尺码(统一转大小写匹配Excel内容)
    merch_type = merchpurchased[0].lower()
    color = merchpurchased[1].lower()
    size = merchpurchased[2].upper()
    
    # 遍历目标行范围(原代码指定的3-5行)
    for row in range(3, 6):
        # 假设Excel列1=商品类型,列2=颜色,列3=尺码
        cell_type = ws.cell(row=row, column=1).value
        cell_color = ws.cell(row=row, column=2).value
        cell_size = ws.cell(row=row, column=3).value
        
        # 匹配对应商品记录
        if cell_type == merch_type and cell_color == color and cell_size == size:
            # 向右移动2格定位到已售数量列(列3+2=列5)
            sold_col = 3 + 2
            sold_cell = ws.cell(row=row, column=sold_col)
            
            # 处理空值:若单元格为空,默认从0开始累加
            current_sold = sold_cell.value if sold_cell.value is not None else 0
            sold_cell.value = current_sold + 1
            print(f"已更新:连帽衫-{color}-{size} 已售数量+1")
            # 找到唯一匹配项后退出循环
            break
    else:
        print("未找到对应商品的库存记录")
    
    # 保存修改到Excel文件
    wb.save('C:/Users/Angela Shen/Downloads/Python gc merch project.xlsx')
               
inventory_update('hrl')

关键改动说明

  • 移除未使用的numpy依赖,简化代码结构
  • 增加输入验证逻辑,提前拦截无效输入
  • 使用ws.cell(row, column)精准定位单元格,替代字符串拼接方式,更易维护
  • 处理单元格空值场景,避免None + 1的报错
  • 新增操作提示,方便确认修改结果
  • 补充工作簿保存步骤,确保修改写入文件

内容的提问来源于stack exchange,提问作者Angela Shen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:06:29