xlwings:數組
xlwings是一個Python庫,它使Python的一些數據分析特性能夠在Excel實例中使用,包括對numpy數組、pandas Series和DataFrame的支持。與其餘任何Python庫同樣,咱們可使用pip或conda等經常使用方法來安裝它。詳細文檔(https://www.kancloud.cn/gnefnuy/xlwings-docs/1127455)app
在xlwings中,有四種主要的對象類型,按遞減的層次順序排列:App(表明一個Excel實例)、Book、Sheet和Range。除了這些以外,咱們還將處理Chart和Shape對象。ui
import xlwings as xwspa
app = xw.App(visible=True,add_book=True) #visible是否可見。False表示後臺運行。 add_book 是否新建一個工做簿
其餘操做:
app.screen_updating = False
# :屏幕更新,就是說代碼對於excel的操做你能夠看見,關閉實時更新能夠加快腳本運行。默認是True。
app.pid #App進程pid app.books #返回一個打開的所有workbook的列表。Python打開的和手動打開的是不互通的 終止進程,強制退出。 app.quit() #不保存的狀況下,退出excel程序
命令有不少,選擇一個經常使用的就好。excel
wb = app.books.add() #建立新的book wk = xw.Book() wk = xw.books.add()
wb = app.books.open('filepath') wk = xw.Book('filepath') wk = xw.books.open('filepath')
wk = xw.Book('Book1') wk = xw.books['Book1'] #也可使用索引
若是在兩個Excel實例中打開了相同的文件,則須要徹底限定它幷包含應用程序實例。 您將經過xw.apps.keys()
找到您的應用實例密鑰(PID):code
xw.apps[10559].books['FileName.xlsx']
查看全部的實例進程:
xw.apps.keys() #輸出list
kill全部的實例進程:
for i in xw.apps.keys():
i = 'taskkill/pid ' + str(i) + ' -t -f'
os.system(i)
wb.save(path=None)#:保存工做簿,若爲指定路徑,保存在當前工做目錄。
wk.close() #在沒有保存的狀況下關閉。
wb = app.books.open('im.xlsx')
sheet = wb.sheets[0]對象
sheet.activate #<bound method Sheet.activate of <Sheet [im.xlsx]Sheet1>>
sheet.book
sheet.cells #<Range [im.xlsx]Sheet1!$1:$1048576> 可使用 sheet.cells[0,0].value 獲取cell值。
sheet.name sheet.names 返回全部的工做表特定名稱。
sheet.charts
sheet.clear()
sheet.clear_contents()
sheet.delete()
sheet.index
(name=None, before=None, after=None)
#參數:name(str,default None) - 新工做表的名稱。 若是爲None,則默認爲Excel的name.before (Sheet, default None) - 一個對象,指定在新工做表添加以前的added.after (Sheet, default None) - 指定工做表以後的工做表的對象 表格已添加。wb.sheets.add
sheet.autofit(axis=None) 參數:axis (string, default None) –要自動調整行, 使用如下之一: rows 或 r,要自動調整列, 使用如下之一: columns h c,要自動調整行和列, 不提供參數
sheet.range('A1:F8') #使用value可獲取A1-F8的數據,以二元list展開
sheet.range(‘A1’) # .value 獲取單元格值
sheet.range('A1').value="key"
sheet.range('A1').value=[1,2,3,4,5]
sheet.range('A1').options(transpose=True).value=[1,2,3,4,5]
sheet.used_range.last_cell.row
sheet.used_range.last_cell.column
sheet.range('A1').expand('right').value
sheet.range('A1').expand('down').value
sheet.range(1, 1).expand().shape