使用xlwings为Excel表格列添加自动计算公式的问题
解决xlwings给Excel表格列批量添加公式的问题
先修正代码里的几个核心问题,再给出可运行的方案:
- 你的目标是给绩效列添加公式,但原代码里
column_name设为了'Sales',需替换为绩效列的实际名称(比如'Performance') - 直接通过单元格区域引用表格列的方式在xlwings中兼容性差,应该直接操作表格对象的列
- 公式里的HTML转义符可以简化,用正常运算符即可
修改后的代码如下:
import xlwings as xw # 若操作已有工作簿,替换为你的文件路径;新建则保留xw.Book() wb = xw.Book("你的文件路径.xlsx") # 替换为你表格中绩效列的实际名称 performance_col = 'Performance' # 简化公式写法,用单引号包裹字符串避免转义 formula = '=IF([@Sales]<40000, "Bad", IF(AND([@Sales]>=40000, [@Sales]<=75000), "Neutral", "Good"))' for table_name in ['Table1', 'Table2']: # 获取表格对象(xlwings操作表格的标准方式) table = wb.sheets[0].tables[table_name] # 给绩效列设置公式,新增行时会自动继承 table.columns[performance_col].formula = formula
补充说明:
- 若表格中还没有绩效列,可先添加:
# 检查绩效列是否存在,不存在则添加 if performance_col not in [col.name for col in table.columns]: table.add_field(name=performance_col) - 公式里的
[@Sales]是Excel表格的结构化引用,会自动适配每行数据,新增行时无需手动调整公式
内容的提问来源于stack exchange,提问作者Pratham Shah
相关产品推荐
相关产品推荐

