Python XlsxWriter - 定義名稱



在 Excel 中,可以使用使用者定義的名稱來標識單元格、公式或單元格範圍,該名稱可用作變數,使公式定義易於理解。這可以使用 Workbook 類的 define_name() 方法來實現。

在下面的程式碼片段中,我們有一系列包含數字的單元格。此範圍已命名為 marks。

data=['marks',50,60,70, 'Total']
ws.write_row('A1', data)
wb.define_name('marks', '=Sheet1!$A$1:$E$1')

如果名稱分配給單元格範圍,則 define_name() 方法的第二個引數是一個字串,其中包含工作表名稱,後跟“!”符號,然後使用絕對定址方案的單元格範圍。在本例中,sheet1 中的範圍 A1:E1 被命名為 marks

此名稱可用於任何公式。例如,我們計算由名稱 marks 標識的範圍內的數字之和。

ws.write('F1', '=sum(marks)')

我們還可以在 write_formula() 方法中使用命名的單元格。在下面的程式碼中,此方法用於計算金額的利息,其中 rate 是一個定義的名稱

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

Ex2 Xlsx
廣告