31
loading...
This website collects cookies to deliver better user experience
import xlwings as xw
with xw.App(add_book=False, visible=True) as app:
wb: xw.Book = app.books.open('example.xlsx')
sheet: xw.Sheet = wb.sheets[0]
# handle the sheet
wb.save()
xlwings
並命名為 xw
後,我們建立了一個 App
物件,因為有存取 Excel 及開關檔案的原因,App
是被設計成支援 context manager 的,因此我們用 with
敘述讓 Python 自動幫我們處理掉區塊執行後自動關閉 Excel 的瑣事。book
物件叫 Excel 開啟 example.xlsx 檔案,再把檔案內的第一個工作表指到 sheet
,最後我們用 save()
叫 Excel 幫我存檔。# handle the sheet
部分,典型的操作是找到你要的儲存格,再做後續的讀取、運算、寫入等工作。range()
函式。range()
可以接受多種的儲存格標示法:# Excel 標示法-單格
sheet.range('A1')
# Excel 標示法-多格
sheet.range('A1:C3')
# 以 1 為首的 tuple (row, column) 標示法-單格
sheet.range((1,2)) # B1
# 以 1 為首的 tuple (row, column) 標示法-多格
sheet.range((1,2), (3,4)) # B1:D3
AA
、AB
、AC
這類兩碼欄號的邏輯問題。>>> rng1 = sheet.range((1,2)) # B1
>>> rng1.value
'每次 Jira 的卡頓都令人抓狂'
>>> rng1.value = '用戰術上的勤奮掩蓋戰略上的怠惰'
>>> rng1.value
'用戰術上的勤奮掩蓋戰略上的怠惰'
>>> rng2 = sheet.range((1,2), (1,4)) # B1:D1
>>> rng2.value
['a', 'b', 'c']
>>> rng2.value = ['d', 'e', 'f']
>>> rng2.value
['d', 'e', 'f']
>>> rng3 = sheet.range((10,1), (11,3)) # A10:C11
>>> rng3.value
[['a', 'b', 'c'], [10.0, 20.0, 30.0]]
A10:C11
這樣 3 * 2 的範圍,對應的值也會以 3 * 2 的巢狀二維陣列形式表示。range()
搭配程式本身的迴圈或迭代結構,就可以完成大部分的任務囉,是不是相當簡單直覺呢!App
可以開啟多份 Excel 檔案,可以互相剪剪貼貼。app
,此時他們會有各自的程序 ID。