使用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
相关产品推荐
相关产品推荐

