如何使用XlsxWriter的worksheet.write_formula实现列间公式计算
XlsxWriter批量写入列间计算公式方案
方法1:循环遍历写入(全版本兼容,最常用)
这种方式兼容所有Excel版本,适合已知数据总行数的场景,逐行写入对应公式即可:
import xlsxwriter workbook = xlsxwriter.Workbook('计算结果.xlsx') worksheet = workbook.add_worksheet() # 假设数据共有N行,此处以100行为例,行号从1到100 total_data_rows = 100 for row_idx in range(total_data_rows): # XlsxWriter的行、列索引从0开始计数,C列对应列索引为2 worksheet.write_formula(row_idx, 2, f'=A{row_idx+1}+B{row_idx+1}') # 后续写入A、B列数据、关闭工作簿逻辑和原有逻辑一致 workbook.close()
如果需要拼接A1样式的单元格地址也可以,效果完全相同。
方法2:动态数组溢出公式(仅Excel 365/2021及以上版本支持)
如果使用场景的Excel版本都支持动态数组功能,仅需写入1次公式即可自动向下溢出填充整列:
# 写法1:指定计算范围,仅覆盖有数据的行 worksheet.write_formula('C1', '=A1:A100+B1:B100') # 写法2:全列匹配,A、B列任意行有数据都会自动计算 worksheet.write_formula('C1', '=A:A+B:B')
注意:该方法在旧版Excel中打开会出现计算错误,仅适合内部固定使用新版Excel的场景
方法3:批量数组公式(兼容旧版Excel,无需循环)
如果需要兼容旧版Excel,又不想写循环逻辑,可以使用数组公式一次性写入整列范围:
# 一次性给C1到C100的所有单元格写入对应的求和数组公式 worksheet.write_array_formula('C1:C100', '=A1:A100+B1:B100')
写入后打开Excel时,整列公式会自动带上数组公式的大括号标记,无需手动添加。
内容的提问来源于stack exchange,提问作者Elle Li
相关产品推荐
相关产品推荐

