學了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應用方面的內容,老陳講完了,如果覺得對你有所幫助,希望老鐵能轉發點贊,讓更多的人看到這篇文章。你的轉發和點贊,就是對老陳繼續創作和分享最大的鼓勵。