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