App下載

xlwings-能讓 Excel 飛上天

猿友 2020-09-08 14:09:30 瀏覽數(shù) (10203)
反饋

文章轉(zhuǎn)載自公眾號(hào):Python技術(shù)

人生苦短,我用 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 模塊簡(jiǎn)介

Python 操作 Excel 的模塊,網(wǎng)上提到的模塊大致有:xlwingsxlrdxlwt、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)用 ExcelAPI 操作 Excel 文檔同樣也是可行的,相當(dāng)麻煩基本和 VBA 沒(méi)有區(qū)別。

關(guān)于 xlwings

為什么 xlwings 能讓 Excel 飛起來(lái)呢,因?yàn)?code>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 還可以和 matplotlibnumpy 以及 pandas 無(wú)縫連接,支持讀寫(xiě) numpy、pandas 數(shù)據(jù)類(lèi)型,將 matplotlib 可視化圖表導(dǎo)入到 excel 中。

最重要的是 xlwings 可以調(diào)用 Excel 文件中 VBA 寫(xiě)好的程序,也可以讓 VBA調(diào)用用 Python 寫(xiě)的程序。

xlwings 優(yōu)點(diǎn)

  • xlwings 能夠非常方便的讀寫(xiě) Excel 文件中的數(shù)據(jù),并且能夠進(jìn)行單元格格式的修改
  • xlwings 可以和 Matplotlib 以及 Pandas 無(wú)縫連接
  • xlwings 可以調(diào)用 Excel 文件中 VBA 寫(xiě)好的程序,也可以讓 VBA 調(diào)用 Python 寫(xiě)的程序。
  • xlwings 開(kāi)源免費(fèi),并且一直在更新

xlwings 基本操作

xlwings-能讓 Excel 飛上天

xlwings 安裝和使用

和其他模塊使用一樣,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

Python to Excel

連接到工作簿最簡(jiǎn)單便捷的方法是由 xw.Book 提供:它在所有應(yīng)用程序?qū)嵗胁檎以摴ぷ鞑静⒎祷劐e(cuò)誤,但如果同一個(gè)工作簿在多個(gè)實(shí)例中打開(kāi),要連接到活動(dòng)應(yīng)用程序?qū)嵗械墓ぷ鞑荆瑒t需要使用 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

Excel 活動(dòng)對(duì)象

# 活動(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)基本操作:

  • 打開(kāi)表格
  • 引用工作表
  • 引用單元格
  • 引用區(qū)域
  • 寫(xiě)入數(shù)據(jù)(數(shù)據(jù)寫(xiě)入默認(rèn)按照行寫(xiě)入,如果要指定相應(yīng)的列寫(xiě)入則需要添加相應(yīng)參數(shù),指定參數(shù)為:transpose = True)
  • 讀取數(shù)據(jù)

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

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)

xlwings-能讓 Excel 飛上天

總結(jié)

磨刀不誤砍柴工,今天的文章主要是操作 Excel 的工具 xlwings 介紹,大家都用工具操練起來(lái),好好修煉如何擰好螺絲的內(nèi)功,奧利給!

以上就是W3Cschool編程獅關(guān)于xlwings-能讓 Excel 飛上天的相關(guān)介紹了,希望對(duì)大家有所幫助。

3 人點(diǎn)贊

App下載
App下載

掃描二維碼

下載編程獅App

關(guān)注有禮
微信公眾號(hào)

掃碼關(guān)注 領(lǐng)資料包

意見(jiàn)反饋
幫助中心
返回頂部