【Python辦公自動化筆記-Excel篇9】跨工作表求和

【Python辦公自動化筆記-Excel篇9】跨工作表求和

更新於 發佈於 閱讀時間約 2 分鐘

實務工作上,我們很可能會遇到需要對每張工作表的某一固定位置儲存格求和的情況。比如說,E5儲存格存放每個月的業績總額,以下的程式碼可以求得一整年的總營業額。

# 跨工作表求和
from openpyxl import load_workbook

path = 'D:/sample.xlsx'
wb = load_workbook(path)

data = []
for ws in wb.worksheets: # 拜訪每張工作表
data.append(ws['E5'].value) # 將E5的值加入data列表
print(sum(data)) # 印出data列表中各元素的和

# 改用較淺白一點的寫法:
ans = 0
for ws in wb.worksheets:
ans += ws['E5'].value
print(ans)

以下的程式碼則是用更具Python風格、更精簡且更漂亮的列表推導式(List Comprehension)來輕鬆達成同樣的功能。

ans = sum([ws['E5'].value for ws in wb.worksheets])
print(ans)
avatar-img
阿寶哥的沙龍
1會員
10內容數
留言
avatar-img
留言分享你的想法!
阿寶哥的沙龍 的其他內容
"求和"應該是我們最常用到的基本數學運算了,利用迴圈和切片的技巧,以下的程式碼能分別印出每個人的總分和各科的總分。
我們利用工作表的move_range()方法,可以輕鬆地移動儲存格。其中,rows參數的值表示向下移幾列,cols參數的值表示向右移幾行;當rows參數的值是負數時,則表示向上移幾列;cols參數的值負數時,則表示向上移幾行, 也可以一次移動一整個區塊範圍的儲存格。 利用工作表的freeze_pan
我們可以利用工作表的append()方法,在工作表的列尾添加資料列。 利用迴圈的技巧,我們可以批次賦予區塊內所有儲存格相同的值。 我們也可以在指定的列(行)之前插入指定數量的空白列(行),從指定的列(行)開始向下(右)刪除指定數量的列(行)。
"求和"應該是我們最常用到的基本數學運算了,利用迴圈和切片的技巧,以下的程式碼能分別印出每個人的總分和各科的總分。
我們利用工作表的move_range()方法,可以輕鬆地移動儲存格。其中,rows參數的值表示向下移幾列,cols參數的值表示向右移幾行;當rows參數的值是負數時,則表示向上移幾列;cols參數的值負數時,則表示向上移幾行, 也可以一次移動一整個區塊範圍的儲存格。 利用工作表的freeze_pan
我們可以利用工作表的append()方法,在工作表的列尾添加資料列。 利用迴圈的技巧,我們可以批次賦予區塊內所有儲存格相同的值。 我們也可以在指定的列(行)之前插入指定數量的空白列(行),從指定的列(行)開始向下(右)刪除指定數量的列(行)。