如何使用Python为Excel列从第二行开始批量应用RIGHT公式
代码调整说明
原代码的问题是openpyxl不支持直接给整列范围赋值公式时自动匹配对应行的引用,直接给A2:A{maxr}范围赋值会导致所有单元格共用同一个错误的范围引用公式,不会生成每行对应的RIGHT(Ax,10)。
你可以按以下逻辑修改代码,不需要额外的中间存盘步骤,处理效率更高:
import csv import openpyxl wb = openpyxl.Workbook() ws = wb.active # 读取CSV内容写入工作表 with open(r'location\file.csv', encoding='utf-8') as f: reader = csv.reader(f, delimiter=',') for row in reader: ws.append(row) # 获取最大行号,从第2行开始逐行设置公式 max_row = ws.max_row for row_num in range(2, max_row + 1): ws[f'A{row_num}'] = f'=RIGHT(A{row_num}, 10)' # 直接保存最终文件即可 wb.save(r'location\file.xlsx')
额外优化建议
如果需要同时处理多份报表,可以把路径参数化封装成函数,每小时定时触发时遍历对应目录下的所有CSV文件批量处理即可。
如果不想保留公式只保留计算后的值,可以直接在Python侧处理字符串再写入A列,不需要调用Excel公式:
# 替换上面的公式设置逻辑,直接处理字符串,不需要依赖Excel公式计算 for row_num in range(2, max_row + 1): original_value = str(ws[f'A{row_num}'].value) ws[f'A{row_num}'] = original_value[-10:] if len(original_value) >=10 else original_value
内容的提问来源于stack exchange,提问作者FinestRyeBread
相关产品推荐
相关产品推荐

