iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
Python

運用 Python 操作 Excel系列 第 13

[Day 13] 運用 Python 操作 Excel- 小試身手(將一個工作表另外複製11份)

  • 分享至 

  • xImage
  •  

在執行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

執行結果

https://ithelp.ithome.com.tw/upload/images/20240924/20168857ijPorialtw.png
https://ithelp.ithome.com.tw/upload/images/20240924/2016885786mRfmoG4T.png
會發現這樣呈現工作表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')    # 儲存工作簿

執行結果

https://ithelp.ithome.com.tw/upload/images/20240924/20168857UAMpiWZ8zn.png
https://ithelp.ithome.com.tw/upload/images/20240924/20168857Yuli79IPxk.png


上一篇
Python 操作 Excel -小試身手(隱藏/顯示工作表)
下一篇
Python 操作 Excel -小試身手(保護與取消保護工作表)
系列文
運用 Python 操作 Excel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言