日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

超全整理|Python 操作 Excel 库 xlwings 常用操作详解!

發布時間:2023/12/19 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超全整理|Python 操作 Excel 库 xlwings 常用操作详解! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在之前的文章中我們曾詳細的講解了如何使用openpyxl 操作Excel,其實在Python中還有其他可以直接操作 Excel 文件的庫,如 xlwings、xlrd、xlwt 等等,本文就將講解另一個優秀的庫xlwings

開頭還是想說一下,各個庫之間沒有明確的好壞之分,每個庫都有其適合的應用場景,并且xlwings 和 openpyxl 許多區別決定了它們的能力是互為補充:

xlwings:需要安裝有 Excel 軟件,支持 .xls和 .xlsx 格式;可以調用 Excel 文件中 VBA 寫好的程序;和 matplotlib 以及 pandas 的兼容性強

openpyxl:不需要 Excel 軟件,僅支持 .xlsx 格式

安裝

xlwings 是一個非標準庫,需要在命令行中安裝,在終端(Mac)/命令行(Win)使用pip安裝即可,一般不會出現什么問題。

pip?install?xlwings

前置知識

對 xlwings 的核心理解就在于下面這張圖:

可以看到,和 xlwings 直接對接的是 apps,也就是 Excel 應用程序,然后才是 工作簿 books 和工作表 sheets,這點和 openpyxl 有較大區別,也正是因為此,xlwings 需要依然安裝有 Excel 應用程序的環境

代碼詳解

一、打開Excel程序

使用app打開

import?xlwings?as?xw app?=?xw.App(visible=True,?add_book=False)?#?程序可見,只打開不新建工作薄 app.display_alerts?=?False?#?警告關閉 app.screen_updating?=?False?#?屏幕更新關閉

二、保存、退出、關閉

這里需要注意,因為 xlwings 是以程序 apps 作為初級操作對象,因此開始和最后都是基于 app 的開和關

path?=?r"C:\Scientific?Research\Python" wb?=?app.books.open(path?+?r'\practice.xlsx') wb.save()?#?保存文件 wb.close()?#?關閉文件 app.quit()?#?關閉程序

打開表格又分一下兩種情況,即 固定 和 活動:

xw.Book(path?+?r'\practice.xlsx')???#?固定打開表格 xw.books.open(path?+?r'\practice.xlsx')?#?頻繁打開表格

固定和頻繁打開涉及到一個概念,稱活動對象,它使 xlwings 的操作更顯靈活:

#?活動應用程序 app?=?xw.apps.active#?活動工作簿 wb?=?xw.books.active??#?在活動app wb?=?app.books.active??#?在特定app#?活動工作表 sheet?=?xw.sheets.active??#?在活動工作簿 sheet?=?wb.sheets.active??#?在特定工作簿#?活動工作表的Range xw.Range('A1')?

三、新建 Excel 文件

無論是新建還是打開都記得保存工作簿、關閉工作簿、關閉程序

path?=?r"C:\Scientific?Research\Python" wb?=?app.books.add() wb.save(path?+?r'\new_practice.xlsx')? wb.close()? app.quit()?

四、讀取內容

示例文件 practice.xlsx 如下:

下面的代碼部分不再顯示程序的開閉代碼,利于直觀看到重點:

path?=?r"C:\Scientific?Research\Python" wb?=?app.books.open(path?+?r'\practice.xlsx') #?類似?openpyxl?中的?sheet?=?workbook.active sheet?=?wb.sheets.active#?獲取單個單元格的值 A1?=?sheet.range('A1').value print(A1) #?獲取橫向或縱向多個單元格的值,返回列表 A1_A3?=?sheet.range('A1:A3').value print(A1_A3) #?獲取給定范圍內多個單元格的值,返回嵌套列表,按行為列表 A1_C4?=?sheet.range('A1:C4').value print(A1_C4)

在 xlwings 中,可以通過 sheet.range 獲取一個或多個單元格進行操作,另外也可以不用 sheet.range 獲取:

#?獲取單個單元格的值 A1?=?sheet['A1'].value print(A1) #?獲取橫向或縱向多個單元格的值,返回列表 A1_A3?=?sheet['A1:A3'].value print(A1_A3) #?獲取給定范圍內多個單元格的值,返回嵌套列表,按行為列表 A1_C4?=?sheet['A1:C4'].value print(A1_C4)

無論是單個單元格還是多個單元格,可以用 .value直接獲取,輸出結果和使用 .range 完全一致,也避免了類似 openpyxl 對于多個單元格需要再建立循環遍歷才能獲取值。

還有一種類似 pandas 切片獲取范圍內所有值的方法:

sheet?=?wb.sheets.active A1_B2?=?sheet[:2,?:2].value print(A1_B2)

五、寫入數據

以下為寫入 1 個單元格、一行或一列寫入多個單元格、寫入范圍內多個單元格代碼

#?寫入?1?個單元格 sheet.range('A2').value?=?'大明'#?一行或一列寫入多個單元格 #?橫向寫入A1:C1 sheet.range('A1').value?=?[1,2,3] #?縱向寫入A1:A3 sheet.range('A1').options(transpose=True).value?=?[1,2,3]#?寫入范圍內多個單元格 sheet.range('A1').options(expand='table').value?=?[[1,2,3],?[4,5,6]]

例如,如果要給 practice.xlsx 添加一行新的記錄,代碼如下:

import?xlwings?as?xw app?=?xw.App(visible=True,?add_book=False) app.display_alerts?=?False app.screen_updating?=?Falsepath?=?r"C:\Scientific?Research\Python" wb?=?app.books.open(path?+?r'\practice.xlsx') sheet?=?wb.sheets.active sheet.range('A5').value?=?['小蘭',?23,?'女']wb.save() wb.close() app.quit()

六、獲取數據范圍

有兩種方法實現

#?方法一 shape?=?sheet.used_range.shape print(shape)#?方法二 nrow?=?sheet.api.UsedRange.Rows.count ncol?=?sheet.api.UsedRange.Columns.count print(nrow) print(ncol)

七、輸出并修改行高列寬

#?輸出 print(sheet.range('A1:A2').row_height) print(sheet.range('A1:A2').column_width) #?修改 sheet.range('A1:A2').row_height?=?15 sheet.range('A1:A2').column_width?=?10

八、獲取及設置公式

可以調用Excel公式,這是pandas無法完成的

#?獲取公式 print(sheet.range('B2').formula_array) #?寫入公式 sheet.range('B2').formula='=SUM(A1,A2)'

九、 獲取、設置及清除顏色格式

當然類似openpyxl等樣式修改也是支持的

#?獲取顏色 print(sheet.range('C1').color) #?設置顏色 sheet.range('C1').color?=?(255,?0,?120) #?清除顏色 sheet.range('C1').color?=?None

以上僅是針對一些常用操作給出代碼示例與講解,更多的操作可以閱讀官方文檔,大家也可以自己對比一下xlwings和其他庫在部分操作上的異同。未來我們也會更新基于xlwings的辦公自動化案例!

-END-

點分享

點收藏

點點贊

點在看

總結

以上是生活随笔為你收集整理的超全整理|Python 操作 Excel 库 xlwings 常用操作详解!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。