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

使用openpyxl操作Excel时,将单元格'-'替换为0报错求助

问题解决:openpyxl替换"-"为0时的TypeError错误

错误原因

你遇到的TypeError是因为字符串的replace()方法要求第二个参数必须是字符串类型,你传入了整数0,不符合方法参数要求。另外原代码中NEW_FILE_SHEET变量未定义,也会导致运行错误。

解决方案

根据你的需求,提供两种可行的代码修正方案:

方案1:将"-"替换为整数0(更贴合需求)

直接判断单元格值是否为"-",符合条件则赋值整数0,无需使用replace:

import openpyxl

NEW_EXCEL_FILE = openpyxl.load_workbook('workbook1.xlsx')
NEW_FILE_SHEET = NEW_EXCEL_FILE.active
SHEET = NEW_EXCEL_FILE.get_sheet_by_name(sheet_name)

for i, row in enumerate(SHEET.iter_rows()):
    for j, col in enumerate(row):
        cell_value = col.value
        # 匹配到"-"则替换为整数0
        if cell_value == "-":
            cell_value = 0
        NEW_FILE_SHEET.cell(row=i+1, column=j+1).value = cell_value
        
NEW_EXCEL_FILE.save('workbook1.xlsx')

方案2:将"-"替换为字符串"0"

如果需要保留字符串类型的0,修改replace的第二个参数为字符串即可:

import openpyxl

NEW_EXCEL_FILE = openpyxl.load_workbook('workbook1.xlsx')
NEW_FILE_SHEET = NEW_EXCEL_FILE.active
SHEET = NEW_EXCEL_FILE.get_sheet_by_name(sheet_name)

for i, row in enumerate(SHEET.iter_rows()):
    for j, col in enumerate(row):
        cell_value = col.value
        # 仅对字符串类型的值调用replace,避免非字符串类型报错
        if isinstance(cell_value, str):
            cell_value = cell_value.replace("-", "0")
        NEW_FILE_SHEET.cell(row=i+1, column=j+1).value = cell_value
        
NEW_EXCEL_FILE.save('workbook1.xlsx')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:20:27