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

Python中float与sequence相乘报错,openpyxl处理Excel问题求助

解决openpyxl处理Excel时的乘法类型错误

错误原因

报错TypeError: can't multiply sequence by non-int of type 'float'说明你尝试相乘的cell.value是字符串类型(这里的sequence指字符串),而非数字类型。大概率是以下两种情况:

  • 循环包含了表头行(比如第1行是"价格"这类文本标题)
  • Excel中第三列的单元格内容是字符串格式的数字(比如带空格、特殊字符,或单元格格式设为文本)

解决方案

1. 跳过表头行

你的循环从row=1开始,而第1行通常是表头(非数字),直接相乘必然报错。把循环起始行改成2即可:

import openpyxl as xl
wb = xl.load_workbook('transactions.xlsx')
sheet = wb['Sheet1']

# 从第2行开始处理数据行
for row in range(2, sheet.max_row + 1):
    cell = sheet.cell(row, 3)
    # 先将单元格值转为浮点数再计算
    corrected_price = float(cell.value) * 0.9
    corrected_price_cell = sheet.cell(row, 4)
    corrected_price_cell.value = corrected_price

wb.save('transactions2.xlsx')

2. 健壮处理:类型转换+异常捕获

如果Excel中存在空单元格或非数字内容,建议加上异常处理避免程序崩溃:

import openpyxl as xl
wb = xl.load_workbook('transactions.xlsx')
sheet = wb['Sheet1']

for row in range(2, sheet.max_row + 1):
    cell = sheet.cell(row, 3)
    try:
        # 尝试将单元格值转为浮点数
        price = float(cell.value)
        corrected_price = price * 0.9
        corrected_price_cell = sheet.cell(row, 4)
        corrected_price_cell.value = corrected_price
    except (ValueError, TypeError):
        # 对非数字/空单元格做标记处理
        corrected_price_cell = sheet.cell(row, 4)
        corrected_price_cell.value = "无效数据"

wb.save('transactions2.xlsx')

额外检查点

打开transactions.xlsx确认:

  • 第三列(C列)的表头是否在第1行
  • 数据行的单元格是否为纯数字,无多余空格或文本格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:27:22