文章轉(zhuǎn)載自公眾號(hào):Python技術(shù)
人生苦短,我用 Python!
Python 作為一種腳本語言,其編程方式越來越受程序員們的青睞,同時(shí)其應(yīng)用也越來越廣泛,其中數(shù)據(jù)分析崗位人才需求也日益漸增,運(yùn)用 Python 相關(guān)模塊進(jìn)行數(shù)據(jù)分析能大大提升工作效率,減輕數(shù)據(jù)分析人員的工作負(fù)擔(dān)。在日常辦公中,使用 Python 的場景也越來越多,很多重復(fù)的工作直接交給程序執(zhí)行效率會(huì)大大提高,所以 Python 操作 Excel 也成為每一個(gè)數(shù)據(jù)分析人員的必備技能,今天的文章就一起來看看 Python 中能操作 Excel 工作表的神器。
Python 操作 Excel 模塊簡介
Python 操作 Excel 的模塊,網(wǎng)上提到的模塊大致有:xlwings
、xlrd
、xlwt
、openpyxl
、pyxll
等,他們提供的功能歸納起來無非有兩種形式:
- 1、用 Python 讀寫
Excel
文件,實(shí)際上就是讀寫有格式的文本文件,操作excel
文件和操作text
、csv
文件沒有區(qū)別,Excel
文件只是用來儲(chǔ)存數(shù)據(jù)。 - 2、除了操作數(shù)據(jù),還可以調(diào)整
Excel
文件的表格寬度、字體顏色等。另外需要提到的是用COM
調(diào)用Excel
的API
操作Excel
文檔同樣也是可行的,相當(dāng)麻煩基本和VBA
沒有區(qū)別。
關(guān)于 xlwings
為什么 xlwings
能讓 Excel
飛起來呢,因?yàn)?code>xlwings支持 Excel
的讀寫操作。具體使用請參照官網(wǎng) ,一切技術(shù)的出現(xiàn)都是為了滿足人的惰性,因此 xlwings
能讓繁瑣的工作簡單化、簡潔化。
Xlwings
是開源且免費(fèi)的工具,能夠非常方便的讀寫 Excel
文件中的數(shù)據(jù),并且能夠進(jìn)行單元格格式的修改。
xlwings
還可以和 matplotlib
、numpy
以及 pandas
無縫連接,支持讀寫 numpy
、pandas
數(shù)據(jù)類型,將 matplotlib
可視化圖表導(dǎo)入到 excel
中。
最重要的是 xlwings
可以調(diào)用 Excel
文件中 VBA
寫好的程序,也可以讓 VBA
調(diào)用用 Python
寫的程序。
xlwings 優(yōu)點(diǎn)
- xlwings 能夠非常方便的讀寫
Excel
文件中的數(shù)據(jù),并且能夠進(jìn)行單元格格式的修改 - xlwings 可以和
Matplotlib
以及Pandas
無縫連接 - xlwings 可以調(diào)用
Excel
文件中VBA
寫好的程序,也可以讓VBA
調(diào)用Pytho
n 寫的程序。 - xlwings 開源免費(fèi),并且一直在更新
xlwings 基本操作
xlwings 安裝和使用
和其他模塊使用一樣,xlwings
在使用之前也需要安裝,本文環(huán)境為 Python 3.6 版本的 Windows 環(huán)境。
模塊安裝
安裝xlwings
的最簡單方法是通過pip
:
pip install xlwings
或者使用conda:
conda install xlwings
再或者
conda install -c conda-forge xlwings
引入模塊使用
import xlwings as xw
Python to Excel
連接到工作簿最簡單便捷的方法是由 xw.Book 提供:它在所有應(yīng)用程序?qū)嵗胁檎以摴ぷ鞑静⒎祷劐e(cuò)誤,但如果同一個(gè)工作簿在多個(gè)實(shí)例中打開,要連接到活動(dòng)應(yīng)用程序?qū)嵗械墓ぷ鞑?,則需要使用 xw.books
并引用特定應(yīng)用程序, 使用區(qū)別如下:
Header1 | Header2 | Header3 |
---|---|---|
New book | xw.Book() | xw.books.add() |
Unsaved book | xw.Book('Book1') | xw.books['Book1'] |
UBook by (full)name | xw.Book(r'D:/test/file.xlsx') | xw.books.open(r'D:/test/file.xlsx') |
注:在 Windows 上指定文件路徑時(shí),應(yīng)該通過在字符串前放置一個(gè) r 來使用原始字符串,或者使用雙反斜杠:D:\Test\file.xlsx
Excel 活動(dòng)對象
# 活動(dòng)應(yīng)用程序(即Excel實(shí)例)
app = xw.apps.active
# 活動(dòng)工作簿
wb = xw.books.active # 在活動(dòng)app
wb = app.books.active # 在特定app
# 活動(dòng)工作表
sht = xw.sheets.active # 在活動(dòng)工作簿
sht = wb.sheets.active # 在特定工作簿
# 活動(dòng)工作表的Range
xw.Range('A1') #在活動(dòng)應(yīng)用程序的活動(dòng)工作簿的活動(dòng)表上
基本操作
以下代碼展示相關(guān)基本操作:
- 打開表格
- 引用工作表
- 引用單元格
- 引用區(qū)域
- 寫入數(shù)據(jù)(數(shù)據(jù)寫入默認(rèn)按照行寫入,如果要指定相應(yīng)的列寫入則需要添加相應(yīng)參數(shù),指定參數(shù)為:transpose = True)
- 讀取數(shù)據(jù)
import xlwings as xw
# 打開表格
file_path = r'D:/test/file.xlsx'
xw.Book(file_path) # 固定打開表格
xw.books.open(file_path) # 頻繁打開表格
# 引用工作表
sht = wb.sheets['sheet1']
# 引用單元格
rng = xw.Range('A1')
# rng = sht[0,0] # 此代碼第一行的第一列即a1,相當(dāng)于 pandas 的切片
# 引用區(qū)域
rng = sht.range('a1:a5')
# rng = sht['a1:a5']
# rng = sht[:5,0]
# 寫入數(shù)據(jù)
sht.range('a1').value = 'Hello Excel' # 指定一個(gè)單元格寫入數(shù)據(jù)
# 按行寫入數(shù)據(jù)
sht.range('a1').value = [1, 2, 3, 4,5,6,7,8]
# 按照列寫入數(shù)據(jù)
sht.range('a2').options(transpose=True).value = [2, 3, 4, 5, 6, 7, 8]
# 按照二維列表的方式寫入數(shù)據(jù)
sht.range('a9').expand('table').value = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'],['j', 'k', 'l']]
# 讀取寫入的數(shù)據(jù)
print(sht.range('A1:D5').value)
xlwings 結(jié)合 matplotlib
xlwings
結(jié)合 Matplotlib
使用能講圖畫貼入到 Excel
中,具體使用 pictures.add()
方法就可以很容易地將Matplotlib
圖作為圖片粘貼到表格中。詳細(xì)代碼如下:
fig = plt.figure() # 指定畫布
# plt.plot([1, 2, 3, 4, 5])
plt.plot([36,5,3,25,78])
plt.plot([9,10,31,45])
plt.plot([6,14,45,31])
sht = xw.Book(r'G:/test/test.xlsx').sheets[0]
sht.pictures.add(fig, name='myplt', update=True)
總結(jié)
磨刀不誤砍柴工,今天的文章主要是操作 Excel 的工具 xlwings
介紹,大家都用工具操練起來,好好修煉如何擰好螺絲的內(nèi)功,奧利給!
以上就是W3Cschool編程獅
關(guān)于xlwings-能讓 Excel 飛上天的相關(guān)介紹了,希望對大家有所幫助。