在執行Excel 操作的時候,比如有時會想要將1月份含欄位資訊的工作表,另外複製其他11個月份
將1月份工作表複製至2月~12月
#ch1_10.py
import openpyxl
from openpyxl.styles import Font
import os
os.chdir(r"C:\Catherine_Files")
# os.chdir 是 python 切換到電腦指定路徑的方法
fn = "out1_4.xlsx"
wb = openpyxl.load_workbook(fn) #開啟wb
print("所有工作表名稱 = ", wb.sheetnames)
src = wb.active
for i in range(2,13):
dst = wb.copy_worksheet(src)
month = str(i) + "月"
dst.title = month
print("所有工作表名稱 = ", wb.sheetnames)
wb.save('out1_10.xlsx') #儲存wb
會發現這樣呈現工作表2和工作表3仍然在裡面,影響美觀,所以我們要重新設計,在複製月份的時候,將不需要的工作表刪除
import openpyxl
from openpyxl.styles import Font
import os
# 切換到指定路徑
os.chdir(r"C:\Catherine_Files")
# 開啟工作簿
fn = "out1_4.xlsx"
wb = openpyxl.load_workbook(fn)
print("所有工作表名稱 = ", wb.sheetnames)
# 檢查是否有工作表"工作表2"和 "工作表3",如果有則刪除
for sheet in ["工作表2", "工作表3"]:
if sheet in wb.sheetnames:
ws = wb[sheet]
wb.remove(ws)
print(f"已刪除工作表: {sheet}")
# 設定"1月"為活動工作表 (確保 src 為有效工作表)
if "1月" in wb.sheetnames:
src = wb["1月"]
else:
src = wb.active # 如果"1月"不存在,則設定為當前的工作表
print("Source worksheet title:", src.title)
# 複製 "1月" 工作表至2月到12月
for i in range(2, 13):
dst = wb.copy_worksheet(src)
month = str(i) + "月"
dst.title = month
print("所有工作表名稱 = ", wb.sheetnames)
wb.save('out1_11.xlsx') # 儲存工作簿