本篇文章同步發布於 Python 使用 openpyxl 將多個 pandas DataFrame 輸出到同一個 Excel 檔案,以及如何刪除 Excel 工作表【Python 處理 Excel #18】
這篇文章分享如何使用 Python openpyxl 套件將多個 DataFrame 輸出到同一個 Excel 檔案中,以及如何使用 Python 刪除 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 檔案,並將它們存儲在 df1
、df2
和 df3
這 3 個 DataFrame 中。然後將這 3 個 DataFrame 存放在一個字典 dataframes
中,其中鍵是工作表的名稱,值是對應的 DataFrame。這樣做的目的是方便後續在活頁簿中新增工作表。
workbook
。dataframes
中的每個鍵和值。sheet_name
(字典的鍵)。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)
remove()
方法,這個方法需要取得的工作表物件才能刪除,適合需要對工作表進行其他操作 (例如檢查內容) 後再刪除的情況。方法 2:使用 del
語句,這是更簡單的方式,透過工作表名稱直接刪除工作表,適合快速刪除工作表。create_sheet
方法可以在活頁簿中建立新的工作表。remove
方法或 del
語句可以刪除活頁簿中的工作表。本篇文章同步發布於 Python 使用 openpyxl 將多個 pandas DataFrame 輸出到同一個 Excel 檔案,以及如何刪除 Excel 工作表【Python 處理 Excel #18】