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

更新於 2023/01/21閱讀時間約 1 分鐘
實務工作上,我們很可能會遇到需要對每張工作表的某一固定位置儲存格求和的情況。比如說,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內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    阿寶哥的沙龍 的其他內容
    我們利用工作表的move_range()方法,可以輕鬆地移動儲存格。其中,rows參數的值表示向下移幾列,cols參數的值表示向右移幾行;當rows參數的值是負數時,則表示向上移幾列;cols參數的值負數時,則表示向上移幾行, 也可以一次移動一整個區塊範圍的儲存格。 利用工作表的freeze_pan
    我們可以利用工作表的append()方法,在工作表的列尾添加資料列。 利用迴圈的技巧,我們可以批次賦予區塊內所有儲存格相同的值。 我們也可以在指定的列(行)之前插入指定數量的空白列(行),從指定的列(行)開始向下(右)刪除指定數量的列(行)。
    其餘讀取整列、整行和所有儲存格等的方法,詳見以下程式碼的註解說明。
    區塊儲存格 假設我們有一張工作表如下,而我們打算讀取C3:D6區塊儲存格的值。 以下的程式碼可以列印出C3:D6區塊儲存格的資料,注意openpyxl預設是採以列為主(row-major)拜訪儲存格。 如果需要以行為主(column-major)的方式印出區塊儲存格的值,可以改用以下的程式碼。 列印
    儲存格的存取和變數的存取一樣直覺與簡單,但是要注意儲存格的值和儲存格物件是兩個不同的東東;其中,儲存格的值是儲存格物件的一個屬性(value)。工作表ws中儲存格A4可以用ws['A4']這樣的方式表示,也可以用ws.cell(row = 4, column = 2)表示,或簡單地用ws.cell(
    學會了工作簿和工作表基本的操作後,讓我們來做一些練習。 1. 新建一個工作簿,並在其內新增12張工作表;將工作表的名稱分別定為1月、2月、3月……12月。 解答: 2. 續上題,批次將工作表的名稱更改為竹科1月、竹科2月、竹科3月……竹科12月。 解答:
    我們利用工作表的move_range()方法,可以輕鬆地移動儲存格。其中,rows參數的值表示向下移幾列,cols參數的值表示向右移幾行;當rows參數的值是負數時,則表示向上移幾列;cols參數的值負數時,則表示向上移幾行, 也可以一次移動一整個區塊範圍的儲存格。 利用工作表的freeze_pan
    我們可以利用工作表的append()方法,在工作表的列尾添加資料列。 利用迴圈的技巧,我們可以批次賦予區塊內所有儲存格相同的值。 我們也可以在指定的列(行)之前插入指定數量的空白列(行),從指定的列(行)開始向下(右)刪除指定數量的列(行)。
    其餘讀取整列、整行和所有儲存格等的方法,詳見以下程式碼的註解說明。
    區塊儲存格 假設我們有一張工作表如下,而我們打算讀取C3:D6區塊儲存格的值。 以下的程式碼可以列印出C3:D6區塊儲存格的資料,注意openpyxl預設是採以列為主(row-major)拜訪儲存格。 如果需要以行為主(column-major)的方式印出區塊儲存格的值,可以改用以下的程式碼。 列印
    儲存格的存取和變數的存取一樣直覺與簡單,但是要注意儲存格的值和儲存格物件是兩個不同的東東;其中,儲存格的值是儲存格物件的一個屬性(value)。工作表ws中儲存格A4可以用ws['A4']這樣的方式表示,也可以用ws.cell(row = 4, column = 2)表示,或簡單地用ws.cell(
    學會了工作簿和工作表基本的操作後,讓我們來做一些練習。 1. 新建一個工作簿,並在其內新增12張工作表;將工作表的名稱分別定為1月、2月、3月……12月。 解答: 2. 續上題,批次將工作表的名稱更改為竹科1月、竹科2月、竹科3月……竹科12月。 解答:
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
    解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
    Thumbnail
    在上一篇教學中,我們學會了如何創建簡易且免費的資料庫,而本篇我們就來學習如何利用python與SQL進行結合,並將資訊傳遞到LINE BOT之中,我們將以簡單的股票追蹤清單作為教學,如果還沒看過上一篇如何安裝SQL Server 2019 免費開發版的人記得先去安裝唷!!
    Thumbnail
    對於程式的初學者而言,理解程式的流程、迴圈的進行、或是變數的變化會需要一定程度將程式在腦中進行運算的能力,要一段時間熟悉與適應,尤其是當程式執行的結果不如預期時,往往是計算的過程和自己所想像的不同,這時又更難靠自己的能力找出錯誤。因此,這邊要介紹的這個工具可以將程式執行的過程逐行將變數的變化視覺化地
    Thumbnail
    在上一篇我們教學了如何爬取歷年股利資訊,今天我們就來爬取更多的資訊,這次是要爬取個股同業比較的資訊,但這次不再跟之前一樣,只是單純的爬蟲而已,因為這次我們遇到了「需要登入」才能拿到的資訊,我們就來看看要如何爬取吧!!
    Thumbnail
    還記得之前介紹我的LINE Bot中第一個功能嗎?沒錯,就是部落格的選單,這選單看起來是不是比較華麗一點,但其實製作上相當簡單就可以完成,要如何製作就是我們今天要教的「客製化選單」
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
    解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
    Thumbnail
    在上一篇教學中,我們學會了如何創建簡易且免費的資料庫,而本篇我們就來學習如何利用python與SQL進行結合,並將資訊傳遞到LINE BOT之中,我們將以簡單的股票追蹤清單作為教學,如果還沒看過上一篇如何安裝SQL Server 2019 免費開發版的人記得先去安裝唷!!
    Thumbnail
    對於程式的初學者而言,理解程式的流程、迴圈的進行、或是變數的變化會需要一定程度將程式在腦中進行運算的能力,要一段時間熟悉與適應,尤其是當程式執行的結果不如預期時,往往是計算的過程和自己所想像的不同,這時又更難靠自己的能力找出錯誤。因此,這邊要介紹的這個工具可以將程式執行的過程逐行將變數的變化視覺化地
    Thumbnail
    在上一篇我們教學了如何爬取歷年股利資訊,今天我們就來爬取更多的資訊,這次是要爬取個股同業比較的資訊,但這次不再跟之前一樣,只是單純的爬蟲而已,因為這次我們遇到了「需要登入」才能拿到的資訊,我們就來看看要如何爬取吧!!
    Thumbnail
    還記得之前介紹我的LINE Bot中第一個功能嗎?沒錯,就是部落格的選單,這選單看起來是不是比較華麗一點,但其實製作上相當簡單就可以完成,要如何製作就是我們今天要教的「客製化選單」