iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Python

30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手系列 第 18

Python 使用 openpyxl 將多個 pandas DataFrame 輸出到同一個 Excel 檔案,以及如何刪除 Excel 工作表【Python 處理 Excel #18】

  • 分享至 

  • xImage
  •  

本篇文章同步發布於 Python 使用 openpyxl 將多個 pandas DataFrame 輸出到同一個 Excel 檔案,以及如何刪除 Excel 工作表【Python 處理 Excel #18】

前言

這篇文章分享如何使用 Python openpyxl 套件將多個 DataFrame 輸出到同一個 Excel 檔案中,以及如何使用 Python 刪除 Excel 檔案的工作表。


建立多個 Excel 工作表

下方的程式碼可以在活頁簿中新增多個工作表:

import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

# 讀取 Excel 檔案
df1 = pd.read_excel('input1.xlsx')
df2 = pd.read_excel('input2.xlsx')
df3 = pd.read_excel('input3.xlsx')

# 將 DataFrame 存放在字典中
dataframes = {
    'Forecast': df1,
    'Order': df2,
    'Stock': df3,
}

# 指定輸出的檔案名稱
output_filename = 'output.xlsx'

# 建立一個新的活頁簿
workbook = Workbook()

# 將每個 DataFrame 寫入對應的工作表
for sheet_name, dataframe in dataframes.items():
    # 為每個 DataFrame 建立一個新的工作表
    worksheet = workbook.create_sheet(title=sheet_name)
    # 將DataFrame的數據添加到工作表中
    for row in dataframe_to_rows(dataframe, index=False, header=True):
        worksheet.append(row)

# 將活頁簿儲存到指定的檔案
workbook.save(output_filename)

解釋

這段程式碼使用 pd.read_excel 函數讀取 3 個 Excel 檔案,並將它們存儲在 df1df2df3這 3 個 DataFrame 中。然後將這 3 個 DataFrame 存放在一個字典 dataframes 中,其中鍵是工作表的名稱,值是對應的 DataFrame。這樣做的目的是方便後續在活頁簿中新增工作表。

將每個 DataFrame 寫入對應的工作表

  • workbook = Workbook():建立一個新的 Excel 活頁簿物件 workbook
  • for sheet_name, dataframe in dataframes.items():遍歷字典 dataframes 中的每個鍵和值。
  • worksheet = workbook.create_sheet(title=sheet_name):為當前 DataFrame 建立一個新的工作表,名稱為 sheet_name(字典的鍵)。
  • dataframe_to_rows():將 DataFrame 轉換為可以直接寫入 Excel 的列格式。
  • ws.append(row):將每一列數據添加到工作表中。
  • workbook.save(output_filename):將活頁簿儲存到指定的檔案 output.xlsx 中。

刪除活頁簿中的工作表

下方的程式碼可以在活頁簿中刪除指定工作表:

import pandas as pd
from openpyxl import Workbook, load_workbook

# 前一個案例輸出的 Excel 檔案名稱
output_filename = 'output.xlsx'

# 讀取活頁簿
workbook = load_workbook(output_filename)

# 指定要刪除的工作表名稱
sheet_to_delete = 'Order'  

# 方法 1:使用 remove() 方法
if sheet_to_delete in workbook.sheetnames:
    worksheet = workbook[sheet_to_delete]
    workbook.remove(worksheet)
else:
    print(f"工作表 '{sheet_name}' 不存在。")

# 方法 2:使用 del 語句
# del workbook[sheet_to_delete]

# 儲存變更
workbook.save(output_filename)

解釋

  • load_workbook():讀取指定的 Excel 檔案。
  • 刪除工作表有兩個方法。方法 1:使用 remove()方法,這個方法需要取得的工作表物件才能刪除,適合需要對工作表進行其他操作 (例如檢查內容) 後再刪除的情況。方法 2:使用 del 語句,這是更簡單的方式,透過工作表名稱直接刪除工作表,適合快速刪除工作表。

總結

  • 使用 create_sheet 方法可以在活頁簿中建立新的工作表。
  • remove 方法或 del 語句可以刪除活頁簿中的工作表。

本篇文章同步發布於 Python 使用 openpyxl 將多個 pandas DataFrame 輸出到同一個 Excel 檔案,以及如何刪除 Excel 工作表【Python 處理 Excel #18】


上一篇
Python 將 pandas 的 DataFrame 輸出到 Excel 檔案【Python 處理 Excel #17】
下一篇
Python 使用 openpyxl 寫入內容到 Excel 儲存格【Python 處理 Excel #19】
系列文
30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言