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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:36:00