Excel中的xls、xlsx、xlsm混合文件,看我用Python如何統一處理......

Python實戰社羣

Java實戰社羣

長按識別下方二維碼,按需求添加

掃碼關注添加客服

進Python社羣▲

掃碼關注添加客服

進Java社羣

作者丨黃偉呢

來源丨數據分析與統計學之美

引言

Python語言,近幾年在辦公自動化這一領域來說,真的超級火爆!用它做批量處理確實比VBA要方便很多。

今天黃同學再帶大家探討Python處理Excel文件時,遇到的一些問題。在Python中,有幾個常用的庫專門用來處理Excel文件,分別是xlrd、xlwt和openpyxl,簡單介紹一下:

  • xlrd只能讀取數據,可以處理xls和xlsx;

  • xlwt只能寫數據,只能處理xls;

  • openpyxl可以讀數據和寫數據,但只能處理xlsx;

如果待處理的文件,既有xls,又有xlsx時,我覺得還是將它們一併轉換爲統一格式,再進行二次修改,顯得更爲方便。

同時,這裏還有一種Excel文件,就是xlsm格式,該表格文件卻很少被其他庫支持。這種情況下,如果我們電腦有安裝微軟的Excel軟件(非wps),就可以通過調用本地excel軟件對錶格文件進行格式轉換,然後我們再進行其它操作。

正文

再給代碼之前,我仍然給大家講述一些知識點,方便大家一讀就會。

  • 上一篇文章,由於處理的是Word文檔,因此這裏調用的是Word程序,那處理Excel文檔,這裏就需要調用Excel程序了;

  • 在Python中,文檔用Documents表示,工作簿用Workbooks表示,因此處理不同的文件,我們需要調用不同的屬性,打開對應的文件;

# 調用word程序
WordApp = win32com.client.Dispatch("Word.Application")
# 調用excel程序
WordApp = win32com.client.Dispatch("Excel.Application")

# 打開word文檔
w.Documents.Open(path)
# 打開Excel工作簿
w.Workbooks.Open(path)

# 後臺運行,不顯示,不警告
WordApp.Visible = 0
WordApp.DisplayAlerts = 0

Excel文件的格式是最多的,這裏我再給大家做一個總結,給你加深一下印象。

這裏需要強調一下:後面的代碼裏,我們在使用SaveAs保存時,會用到一個FileFormat屬性,其中:

  • FileFormat=51,表示xlsx擴展文件;

  • FileFormat=56,表示xls擴展文件;

  • FileFormat=52,表示xlsm擴展文件;

  • FileFormat=23,表示csv擴展文件;

好了,前期準備知識講述完畢,這裏直接給大家上代碼。

import os
import time
import win32com
from win32com.client import Dispatch

def xls_xlsx(path):
   w = win32com.client.Dispatch('Excel.Application')
   w.Visible = 0
   w.DisplayAlerts = 0
   wb = w.Workbooks.Open(path)
   # 這裏必須要絕對地址,保持和xls路徑一致
   newpath = allpath+'\\轉換後的文檔.xlsx'

   wb.SaveAs(newpath,FileFormat = 51)
   # doc.Close() 開啓則會刪掉原來的dxls
   w.Quit()# 退出
   return newpath
allpath = os.getcwd()
print(allpath)
xls_xlsx(allpath+'\\轉換前的文檔.xls')

最終結果:

本文講述完畢,代碼附有註釋,相信大家可以看明白,一篇文章總要留給大家一點思考空間,這裏就不再過多贅述。

程序員專欄 掃碼關注填加客服 長按識別下方二維碼進羣

近期精彩內容推薦:  

 幾句話,離職了

 中國男性的私密數據大賞,女生勿入!

 爲什麼很多人用“ji32k7au4a83”作密碼?

 一個月薪 12000 的北京程序員的真實生活 !


在看點這裏好文分享給更多人↓↓

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