第12天 | 12天搞定Python,讓excel飛起來

學了10多天Python基礎知識了,是時候來點硬貨了,看過《第1天 | 12天搞定Python,告訴你有什麼用?》的老鐵都知道,Python可用的領域挺多的。只是我長期待在企業,所以只能說說,它在企業中常用範圍。

在企業中,我,有時會用Python進行數據爬取和分析;有時會用來快速開發Django Web系統;有時會爲了提供工作效率,我會用Python對excel、word、ppt或pdf相關操作,進行高級處理。

有關Python在數據分析和Django Web方面的應用,我找專題介紹。在這,我先講Python在辦公領域的應用。

12.1 excel操作

上過班或沒上過班的同學都應該知道,excel在日常或工作中的應用是很頻繁的。在工作中,常用來記錄考勤信息和製作報價單等;在生活中,用來安排學習計劃和記錄家庭開支等。

正由於此,Python對Excel提供的支持,是大大大的,大到庫有好多,大到程序員都不知選擇哪一個纔好了。別急,我把已經把Python操作excel的相關庫,給你整理出來了。

 1. 庫的比較

xlrd庫只支持只讀,xlwt補充了只寫,xlutils補充了修改,這就是傳說中的打補丁開發模式,想想不就想用,加上xlwt、xlutils只支持.xls文件的操作,那就更加沒趣了,淘汰。

xlsxwriter只能支持寫的操作,不用我多說了吧,直接淘汰。

openpyxl倒可以對.xlsx進行讀寫操作,可惜不支持.xls文件,這樣就無法滿足對”老古董“文件的處理,淘汰。pandas倒是可以同時支持.xls和.xlsx的讀寫操作,可惜不支持修改功能,淘汰。

經過一步一步的篩選,最後只剩下xlwings和win32com了。一開始,我以爲win32com只能用在Windows 32系統上,經覈查,發現其在Python對應的庫名稱是pypiwin32,而32也不是32位的意思,它也支持64位系統的。

如果非要比較win32com和xlwings的話,那就是win32com的性能要比xlwings好一些,但差別不是特別大,win32com的文檔比xlwings難懂一些。所以在不考慮超級大數據的情況,我們會選擇xlwings。

2. xlwings應用

打開【終端】窗口,輸入pip install xlwings下載開發包。在安裝成功之後,就可以用它對excel進行操作了。

(1) 創建excel文件

創建工作簿,創建頁,在單元格逐個寫入數據,也可一次性寫入多項數據。

import xlwings as xw

app = xw.App(visible=True, add_book=False)
# 新建工作簿
wb = app.books.add()
# 頁sheet1
sht = wb.sheets["sheet1"]
# 單元格內容
sht.range("A1").value = "產品名稱"
sht.range("B1").value = "編號"
sht.range("C1").value = "價格"
sht.range("D1").value = "規格"
sht.range("E1").value = "生產日期"
sht.range("A2").value = "牛逼1號"
sht.range("B2").value = "101010"
sht.range("C2").value = "¥666.66"
# 同時輸入多個(D2~E2),行
sht["D2:E2"].value = ["12*26", "2020-10-20"]
# 按行輸入
sht["A3"].value = ["牛逼2號", "101011", "9.9", "66*32", "2020-10-20"]
# 在當前目錄下生成文件
wb.save("報價單.xlsx")
wb.close()
app.quit()

輸出結果(報價單.xlsx)

(2) 編輯excel數據

修改單元格數據,刪除指定單元格。獲取行和列總數,提供刪除行和列的方法,通過這些核心的API,你就可以對整個sheet進行操作了。

import xlwings as xw

app = xw.App(visible=True, add_book=False)
app.screen_updating = False
app.display_alerts = False
# 打開工作簿
wb = app.books.open("報價單.xlsx")
# 頁sheet1
sht = wb.sheets["sheet1"]
# 獲取總行數和列數
"""rows = sht.used_range.last_cell.row
cols = sht.used_range.last_cell.column"""
# 修改E2單元格內容d
sht["E2"].value = ["2020-10-19"]
#  刪除行
sht["2:2"].delete()
#  刪除列
sht["D:D"].delete()
# 保存當前文件
wb.save()
wb.close()
app.quit()

輸出結果(報價單.xlsx)

 (3) 讀取excel數據

可按單元格或按行進行讀取數據。

import xlwings as xw

app = xw.App(visible=True, add_book=False)
app.display_alerts = True
app.screen_updating = True
# 打開文件
wb = app.books.open("報價單.xlsx")
sht = wb.sheets["sheet1"]
# 讀取單個
a = sht.range("A1").value
print(a)
# 讀取多個並存入列表
r = sht.range("A1:A2").value
print(r)
wb.save()
wb.close()
app.quit()

輸出結果

產品名稱
['產品名稱', '牛逼2號']

好了,有關Python在excel應用方面的內容,老陳講完了,如果覺得對你有所幫助,希望老鐵能轉發點贊,讓更多的人看到這篇文章。你的轉發和點贊,就是對老陳繼續創作和分享最大的鼓勵。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章