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

使用Python XlsxWriter写入公式时自动加@符号致失效求助

解决XlsxWriter自动为公式添加@运算符的问题

这个问题是因为XlsxWriter默认启用了Excel 365的动态数组功能,当写入的公式引用多单元格范围但未标记为数组公式时,会自动添加@(隐式交集运算符)来兼容旧版Excel的公式行为,导致你的SUM(ABS(L2:L16))变成SUM(ABS(@L2:L16))。

解决方案

在写入公式时,通过no_array=True参数告诉XlsxWriter不要将该公式视为数组公式,从而避免添加@符号。

代码示例

import xlsxwriter
from xlsxwriter.utility import xl_rowcol_to_cell

# 创建工作簿和工作表
workbook = xlsxwriter.Workbook('abs_sum.xlsx')
worksheet = workbook.add_worksheet()

# 填充测试数据(L列,行2到行16)
for row_num in range(1, 16):
    worksheet.write(row_num, 11, -row_num)  # L列对应的索引是11

# 构造求和公式
start_cell = xl_rowcol_to_cell(1, 11)  # 转换为L2
end_cell = xl_rowcol_to_cell(15, 11)  # 转换为L16
sum_formula = f'=SUM(ABS({start_cell}:{end_cell}))'

# 写入公式时添加no_array=True参数
worksheet.write('L17', sum_formula, None, {'no_array': True})

workbook.close()

补充说明

  • 该参数需要XlsxWriter版本1.4.0及以上,若你的版本过低,先执行pip install --upgrade xlsxwriter升级。
  • 如果需要使用数组公式的特性(比如返回多单元格结果),则改用write_array_formula方法,此时公式会被Excel识别为数组公式(自动添加大括号),不会出现@符号。

内容的提问来源于stack exchange,提问作者heehee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:06:17