write_array_formula(first_row, first_col, last_row, last_col, formula[, cell_format[, value]])
向工作表单元格写入数组公式。
参数:
数组公式的特征的是公式两边由一对花括号包围: {=SUM(A1:B1*A2:B2)}。
对于返回一系列值的数组公式,你必须明确地指定返回值写到哪个区域:
worksheet.write_array_formula('A1:A3', '{=TREND(C1:C3,B1:B3)}')
worksheet.write_array_formula(0, 0, 2, 0, '{=TREND(C1:C3,B1:B3)}')
如果数组公式返回的是单个值,那么第一个(first_)和最后一个(last_)参数应当是一样的:
worksheet.write_array_formula('A1:A1', '{=SUM(B1:C1*B2:C2)}')
然而,在这种情况下,直接使用write_formula()或write()方法更容易:
# 和上面的例子一样但更简洁。
worksheet.write('A1', '{=SUM(B1:C1*B2:C2)}')
worksheet.write_formula('A1', '{=SUM(B1:C1*B2:C2)}')
如上所示,行-列和A1表示法都支持。
cell_format参数用于向单元格应用格式。这个参数是可选的,但在使用时,它必须是一个有效的格式对象。
如有需要,指定公式的计算结果也是可行的(请看之前write_formula()方法中对于公式和value参数的讨论)。然而,使用此参数只会将单个值写入结果数组的左上角单元格。
这是一个返回一个或多个返回值的数组公式的例子。
#######################################################################
#
# Example of how to use Python and the XlsxWriter module to write
# simple array formulas.
#
# Copyright 2013-2017, John McNamara, [email protected]
#
import xlsxwriter
# 创建一个新工作簿文件并添加一个工作表
workbook = xlsxwriter.Workbook('array_formula.xlsx')
worksheet = workbook.add_worksheet()
# 写入一些测试数据。
worksheet.write('B1', 500)
worksheet.write('B2', 10)
worksheet.write('B5', 1)
worksheet.write('B6', 2)
worksheet.write('B7', 3)
worksheet.write('C1', 300)
worksheet.write('C2', 15)
worksheet.write('C5', 20234)
worksheet.write('C6', 21003)
worksheet.write('C7', 10000)
# 写入一个返回单个值的数组公式
worksheet.write_formula('A1', '{=SUM(B1:C1*B2:C2)}')
# 和上面的例子一样但更冗长
worksheet.write_array_formula('A2:A2', '{=SUM(B1:C1*B2:C2)}')
# 写入一个返回一系列值的数组公式
worksheet.write_array_formula('A5:A7', '{=TREND(C5:C7,B5:B7)}')
workbook.close()