xlwings 操作 excel


 

xlwings:

xlwings是一個Python庫,它使Python的一些數據分析特性可以在Excel實例中使用,包括對numpy數組、pandas Series和DataFrame的支持。與其他任何Python庫一樣,我們可以使用pip或conda等常用方法來安裝它。詳細文檔(https://www.kancloud.cn/gnefnuy/xlwings-docs/1127455)

在xlwings中,有四種主要的對象類型,按遞減的層次順序排列:App(代表一個Excel實例)、Book、Sheet和Range。除了這些之外,我們還將處理Chart和Shape對象。

一 application 操作:

1 導入:

import xlwings as xw

2 打開 excel

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程序

二  workbooks

1新建wk對象

命令有很多,選擇一個常用的就好。

wb = app.books.add() #創建新的book
wk = xw.Book()
wk = xw.books.add()

2 打開 excel文件

wb = app.books.open('filepath')
wk = xw.Book('filepath')
wk = xw.books.open('filepath')

3 打開未儲存或未關閉的excel實例

wk = xw.Book('Book1')    
wk = xw.books['Book1']  #也可以使用索引

如果在兩個Excel實例中打開了相同的文件,則需要完全限定它並包含應用程序實例。 您將通過xw.apps.keys()找到您的應用實例密鑰(PID):

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)

4.保存

wb.save(path=None)#:保存工作簿,若為指定路徑,保存在當前工作目錄。 

5. 關閉

wk.close()  #在沒有保存的情況下關閉。

 三 對worksheet 操作

wb = app.books.open('im.xlsx')
sheet = wb.sheets[0]

1 返回操作對象

sheet.activate #<bound method Sheet.activate of <Sheet [im.xlsx]Sheet1>> 

2 返回sheet指定的book

sheet.book

3 返回-個range對象,表示sheet上所有的單元格

sheet.cells #<Range [im.xlsx]Sheet1!$1:$1048576> 可以使用 sheet.cells[0,0].value 獲取cell值。

4 獲取或設置Sheet的名稱

sheet.name

sheet.names 返回所有的工作表特定名稱。

5  獲取sheet中的所有圖表集合

sheet.charts

6 清空表中所有數據和格式。

sheet.clear()

7 清楚工作表的內容,但保留格式

sheet.clear_contents()

8 刪除工作表

sheet.delete()

9 返回表索引(與excel相同)

sheet.index

10 創建一個新的Sheet並使其成為活動工作表

wb.sheets.add(name=None, before=None, after=None) 
#參數:name(str,default None) - 新工作表的名稱。 如果為None,則默認為Excel的name.before (Sheet, default None) - 一個對象,指定在新工作表添加之前的added.after (Sheet, default None) - 指定工作表之后的工作表的對象 表格已添加。

 11 在整個工作表上自動調整列,行或兩者的寬度

sheet.autofit(axis=None) 參數:axis (string, default None) –要自動調整行, 使用以下之一: rows 或 r,要自動調整列, 使用以下之一: columns h c,要自動調整行和列, 不提供參數
 

四 操作range

1 引用區域

sheet.range('A1:F8')  #使用value可獲取A1-F8的數據,以二元list展開

2 引用單元格

 sheet.range(‘A1’) #  .value 獲取單元格值

3 單元格賦值

sheet.range('A1').value="key"

4 按行寫入

sheet.range('A1').value=[1,2,3,4,5]

5 按列寫入

sheet.range('A1').options(transpose=True).value=[1,2,3,4,5]

6 獲取行數

sheet.used_range.last_cell.row

7 獲取列數

sheet.used_range.last_cell.column 

8 獲取連續的整行數據

sheet.range('A1').expand('right').value

9 獲取連續的整列數據

sheet.range('A1').expand('down').value

10 獲取行數和列數

sheet.range(1, 1).expand().shape
 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM