Openpyxl修改单元格值失效 strip与replace无法清除换行符问题
问题根因与修复方案
首先你的核心疏漏是Python字符串为不可变对象,所有strip()、replace()等字符串操作方法都不会修改原字符串,只会返回修改后的新字符串,你没有把返回值重新赋值给cell_obj,所以所有修改操作本质都没生效。除此之外还有几处语法、逻辑问题需要修复:
- 首尾空格判断的代码行末尾缺少冒号,属于语法错误,运行时会直接抛出异常
- 你已经调用
str()将单元格值转为字符串类型,cell_obj不可能为None,对应的非空判断属于无效逻辑 - 你重复编写了多段换行符处理逻辑,代码冗余,且没有覆盖Excel中常见的
\r\n格式换行符 - 空单元格直接转
str会变成字符串"None",不符合预期
修正后代码
#!/usr/bin/env python3 """ Clean up undesired whitespace in some excel files """ from openpyxl import load_workbook Filename = input("Enter filename:\n") wb = load_workbook(filename = Filename) sheet = wb.active max_row = sheet.max_row max_column = sheet.max_column for row in range(2, max_row + 1): for col in range(1, max_column + 1): print("In row: {} col: {}".format(row, col)) cell_value = sheet.cell(row = row, column = col).value # 跳过空单元格 if cell_value is None: continue cell_obj = str(cell_value) # 一次性处理所有换行、首尾空格 cell_obj = cell_obj.replace('\n', '').replace('\r', '').strip() sheet.cell(row=row, column=col).value = cell_obj wb.save(filename=Filename)
内容的提问来源于stack exchange,提问作者TMac
相关产品推荐
相关产品推荐

