iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Python

運用 Python 操作 Excel系列 第 23

[Day23] Python 操作 Excel - 小試身手(運用行列屬性 回傳範圍)

  • 分享至 

  • xImage
  •  

認識屬性

min_row:可以回傳工作表有資料的最小列數
max_row:可以回傳工作表有資料的最大列數
min_column:可以回傳工作表有資料的最小欄數
max_column:可以回傳工作表有資料的最大欄數

範例程式

#ch3_1.py
import openpyxl

fn = "out1_4.xlsx"
wb = openpyxl.load_workbook(fn,data_only=True) 
ws = wb.active
print(f"工作表有資料最小列數 = {ws.min_row}")
print(f"工作表有資料最大列數 = {ws.max_row}")
print(f"工作表有資料最小欄數 = {ws.min_column}")
print(f"工作表有資料最大欄數 = {ws.max_column}")

執行結果

https://ithelp.ithome.com.tw/upload/images/20241004/20168857WqChfwH3ny.png


iter_rows()

ws.iter_rows() 在特定區間內,逐列遍歷
ws.iter_rows(min_row,max_row,min_col,max_col)

iter_cols()

ws.iter_cols() 在特定區間內,逐欄(行)遍歷
ws.iter_rows(min_row,max_row,min_col,max_col)

接下來可以做一些實際的應用,幫助我們更方便看資料

以下是要進行的excel表,數據不多,但比較好釐清一些觀念,所以可以自己用更多的資料進行分析!
https://ithelp.ithome.com.tw/upload/images/20241004/20168857eaDvyQIj1e.png

1.輸出所有行的品項、單價、已售出和收入

for row in ws.iter_rows(min_row=2, max_row=10, min_col=1, max_col=4):
    for cell in row:
        print(cell.value, end=' ')
    print()

執行結果
https://ithelp.ithome.com.tw/upload/images/20241004/20168857PErKuMq61x.png

2.輸出每一列的數據

for col in ws.iter_cols(min_row=2, max_row=10, min_col=1, max_col=4):
    for cell in col:
        print(cell.value, end=' ')
    print()

執行結果
https://ithelp.ithome.com.tw/upload/images/20241004/20168857Z233LEmbKb.png

3.計算總收入

total_revenue = 0
for row in ws.iter_rows(min_row=2, max_row=10, min_col=4, max_col=4):  # D 欄 "收入"
    for cell in row:
        total_revenue += cell.value

print(f"總收入是: {total_revenue}")

執行結果
https://ithelp.ithome.com.tw/upload/images/20241004/201688571f8LsLKkZf.png

4.當我想知道所有品項中單價最高是多少

max_price = 0
item_name = ""
for row in ws.iter_rows(min_row=2, max_row=10, min_col=1, max_col=2):  # 遍歷 A (品項) 和 B (單價) 欄
    item, price = row  # 每行有兩個欄位,item 是品項,price 是單價
    if price.value > max_price:
        max_price = price.value
        item_name = item.value  # 更新品項名稱

print(f"單價最高的品項是: {item_name},最高單價為: {max_price}")

執行結果
https://ithelp.ithome.com.tw/upload/images/20241004/20168857gGMDOUTuh1.png

5.當我想知道已售出數量最多的品項

max_sold = 0
item_name = ""
for row in ws.iter_rows(min_row=2, max_row=10, min_col=1, max_col=3):  # 遍歷 A 到 C 欄
    item, price, sold = row
    if sold.value > max_sold:
        max_sold = sold.value
        item_name = item.value

print(f"售出最多的品項是: {item_name},數量為: {max_sold}")

執行結果
https://ithelp.ithome.com.tw/upload/images/20241004/20168857Es9WnS8p9s.png


上一篇
Python 操作 Excel -小試身手(使輸出資料對齊)
下一篇
Python 操作 Excel -小試身手(將串列資料寫入儲存格)
系列文
運用 Python 操作 Excel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言