Python Excel操作模块XlsxWriter之写入数组公式worksheet.write_array_formula()

worksheet.write_array_formula()

write_array_formula(first_row, first_col, last_row, last_col, formula[, cell_format[, value]])

向工作表单元格写入数组公式。

参数:

  • first_row(int) - 选区的第一行。(索引全是从0开始计数)
  • first_col(int) - 选区的第一列。
  • last_row(int) - 选区的最后一行。
  • last_col(int) - 选区的最后一列。
  • formula(string) - 写入单元格的数组公式。
  • cell_format(Format) - 可选的格式对象。
  • value -  可选的结果。公式计算后的值。
write_array_formula()方法向单元格选区内写入数组公式。在Excel里数组公式是指向一组值执行计算的公式。它可以返回单个值或者一系列值。

数组公式的特征的是公式两边由一对花括号包围: {=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参数的讨论)。然而,使用此参数只会将单个值写入结果数组的左上角单元格。


例:数组公式

这是一个返回一个或多个返回值的数组公式的例子。

Python Excel操作模块XlsxWriter之写入数组公式worksheet.write_array_formula()_第1张图片

#######################################################################
#
# 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()


你可能感兴趣的:(Python)