- Python XlsxWriter 教程
- Python XlsxWriter - 首頁
- Python XlsxWriter - 概述
- Python XlsxWriter - 環境設定
- Python XlsxWriter - Hello World
- Python XlsxWriter - 重要類
- Python XlsxWriter - 單元格表示法與範圍
- Python XlsxWriter - 定義名稱
- Python XlsxWriter - 公式與函式
- Python XlsxWriter - 日期和時間
- Python XlsxWriter - 表格
- Python XlsxWriter - 應用篩選器
- Python XlsxWriter - 字型與顏色
- Python XlsxWriter - 數字格式
- Python XlsxWriter - 邊框
- Python XlsxWriter - 超連結
- Python XlsxWriter - 條件格式化
- Python XlsxWriter - 新增圖表
- Python XlsxWriter - 圖表格式化
- Python XlsxWriter - 圖表圖例
- Python XlsxWriter - 條形圖
- Python XlsxWriter - 折線圖
- Python XlsxWriter - 餅圖
- Python XlsxWriter - Sparklines (迷你圖)
- Python XlsxWriter - 資料驗證
- Python XlsxWriter - 大綱與分組
- Python XlsxWriter - 凍結與拆分窗格
- Python XlsxWriter - 隱藏/保護工作表
- Python XlsxWriter - 文字框
- Python XlsxWriter - 插入圖片
- Python XlsxWriter - 頁面設定
- Python XlsxWriter - 頁首與頁尾
- Python XlsxWriter - 單元格註釋
- Python XlsxWriter - 與 Pandas 協同工作
- Python XlsxWriter - VBA 宏
- Python XlsxWriter 有用資源
- Python XlsxWriter - 快速指南
- Python XlsxWriter - 有用資源
- Python XlsxWriter - 討論
Python XlsxWriter - 公式與函式
Worksheet 類提供了三種使用公式的方法。
- write_formula()
- write_array_formula()
- write_dynamic_array_formula()
所有這些方法都用於為單元格分配公式以及函式。
write_formula() 方法
write_formula() 方法需要單元格的地址,以及包含有效 Excel 公式的字串。在公式字串內部,僅接受 A1 樣式地址表示法。但是,單元格地址引數可以是標準 Excel 型別或基於零的行和列號表示法。
示例
在下面的示例中,各種語句使用 write_formula() 方法。第一個使用標準 Excel 表示法分配公式。第二個語句使用行和列號來指定目標單元格的地址,在該單元格中設定公式。在第三個示例中,IF() 函式被分配給 G2 單元格。
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()
data=[
['Name', 'Phy', 'Che', 'Maths', 'Total', 'percent', 'Result' ],
['Arvind', 50,60,70]
]
ws.write_row('A1', data[0])
ws.write_row('A2', data[1])
ws.write_formula('E2', '=B2+C2+D2')
ws.write_formula(1,5, '=E2*100/300')
ws.write_formula('G2', '=IF(F2>=50, "PASS","FAIL")')
wb.close()
輸出
Excel 檔案顯示以下結果:
write_array_formula() 方法
write_array_formula() 方法用於將公式擴充套件到一個範圍。在 Excel 中,陣列公式對一組值執行計算。它可以返回單個值或一系列值。
陣列公式用公式周圍的一對花括號表示 - {=SUM(A1:B1*A2:B2)}。範圍可以透過範圍中第一個和最後一個單元格的行和列號來指定(例如 0,0, 2,2),也可以透過字串表示形式 'A1:C2' 來指定。
示例
在下面的示例中,陣列公式用於 E、F 和 G 列,以根據 B2:D4 範圍內的分數計算總分、百分比和結果。
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()
data=[
['Name', 'Phy', 'Che', 'Maths', 'Total', 'percent', 'Result'],
['Arvind', 50,60,70],
['Amar', 55,65,75],
['Asha', 75,85,80]
]
for row in range(len(data)):
ws.write_row(row,0, data[row])
ws.write_array_formula('E2:E4', '{=B2:B4+C2:C4+D2:D4}')
ws.write_array_formula(1,5,3,5, '{=(E2:E4)*100/300}')
ws.write_array_formula('G2:G4', '{=IF((F2:F4)>=50, "PASS","FAIL")}')
wb.close()
輸出
以下是使用 MS Excel 開啟工作表時的顯示方式:
write_dynamic_array_data() 方法
write_dynamic_array_data() 方法將動態陣列公式寫入單元格範圍。動態陣列的概念已在 EXCEL 的 365 版本中引入,並且引入了一些利用動態陣列優勢的新函式。這些函式是:
| 序號 | 函式及描述 |
|---|---|
| 1 | FILTER 篩選資料並返回匹配的記錄 |
| 2 | RANDARRAY 生成隨機數陣列 |
| 3 | SEQUENCE 生成一系列數字的陣列 |
| 4 | SORT 按列排序範圍 |
| 5 | SORTBY 按另一個範圍或陣列排序範圍 |
| 6 | UNIQUE 從列表或範圍中提取唯一值 |
| 7 | XLOOKUP VLOOKUP 的替代 |
| 8 | XMATCH MATCH 函式的替代 |
動態陣列是返回值範圍,其大小可以根據結果更改。例如,像 FILTER() 這樣的函式返回一個返回值陣列,該陣列的大小根據篩選結果而變化。
示例
在下面的示例中,資料範圍是 A1:D17。篩選器函式使用此範圍,條件範圍是 C1:C17,其中給出了產品名稱。FILTER() 函式導致動態陣列,因為滿足條件的行數可能會發生變化。
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()
data = (
['Region', 'SalesRep', 'Product', 'Units'],
['East', 'Tom', 'Apple', 6380],
['West', 'Fred', 'Grape', 5619],
['North', 'Amy', 'Pear', 4565],
['South', 'Sal', 'Banana', 5323],
['East', 'Fritz', 'Apple', 4394],
['West', 'Sravan', 'Grape', 7195],
['North', 'Xi', 'Pear', 5231],
['South', 'Hector', 'Banana', 2427],
['East', 'Tom', 'Banana', 4213],
['West', 'Fred', 'Pear', 3239],
['North', 'Amy', 'Grape', 6520],
['South', 'Sal', 'Apple', 1310],
['East', 'Fritz', 'Banana', 6274],
['West', 'Sravan', 'Pear', 4894],
['North', 'Xi', 'Grape', 7580],
['South', 'Hector', 'Apple', 9814])
for row in range(len(data)):
ws.write_row(row,0, data[row])
ws.write_dynamic_array_formula('F1', '=FILTER(A1:D17,C1:C17="Apple")')
wb.close()
輸出
請注意,寫入 write_dynamic_array_formula() 的公式字串不需要包含花括號。生成的 hello.xlsx 必須使用 Excel 365 應用程式開啟。