Python XlsxWriter - 定义的名称
在Excel中,可以通过用户定义的名称来标识一个单元格、一个公式或一个单元格范围,可以将其用作变量,使公式的定义易于理解。 这可以使用 Workbook 类的 define_name() 方法来实现。
在下面的代码片段中,我们有一系列由数字组成的单元格。 该范围已被命名为标记。
data=['marks',50,60,70, 'Total'] ws.write_row('A1', data) wb.define_name('marks', '=Sheet1!$A$1:$E$1')
如果将名称分配给一系列单元格,则 define_name() 方法的第二个参数是一个 string,其中工作表的名称后跟"!" 符号,然后是使用绝对寻址方案的单元格范围。 在这种情况下,sheet1 中的区域 A1:E1 被命名为 marks。
这个名字可以用在任何公式中。 例如,我们计算由名称 marks 标识的范围内的数字总和。
ws.write('F1', '=sum(marks)')
我们还可以在 write_formula() 方法中使用命名单元格。 在以下代码中,此方法用于计算金额的利息,其中 rate 是 defined_name。
ws.write('B5', 10) wb.define_name('rate', '=sheet1!$B$5') ws.write_row('A5', ['Rate', 10]) data=['Amount',1000, 2000, 3000] ws.write_column('A6', data) ws.write('B6', 'Interest') for row in range(6,9): ws.write_formula(row, 1, '= rate*$A{}/100'.format(row+1))
我们也可以使用write_array_formula()方法代替上面代码中的循环 −
ws.write_array_formula('D7:D9' , '{=rate/100*(A7:A9)}')
示例
使用define_name()方法的完整代码如下 −
import xlsxwriter wb = xlsxwriter.Workbook('ex2.xlsx') ws = wb.add_worksheet() data = ['marks',50,60,70, 'Total'] ws.write_row('A1', data) wb.define_name('marks', '=Sheet1!$A$1:$E$1') ws.write('F1', '=sum(marks)') ws.write('B5', 10) wb.define_name('rate', '=sheet1!$B$5') ws.write_row('A5', ['Rate', 10]) data=['Amount',1000, 2000, 3000] ws.write_column('A6', data) ws.write('B6', 'Interest') for row in range(6,9): ws.write_formula(row, 1, '= rate*$A{}/100'.format(row+1)) wb.close()
输出
运行上述程序并用 Excel 打开 ex2.xlsx。