對(duì)比其它編程語(yǔ)言,我們都知道Python最大的優(yōu)勢(shì)是代碼簡(jiǎn)單,有豐富的第三方開(kāi)源庫(kù)供開(kāi)發(fā)者使用。伴隨著近幾年數(shù)據(jù)分析的熱度,Python也成為最受歡迎的編程語(yǔ)言之一。而對(duì)于數(shù)據(jù)的讀取和存儲(chǔ),對(duì)于普通人來(lái)講,除了數(shù)據(jù)庫(kù)之外,最常見(jiàn)的就是微軟的Excel。
1.前期準(zhǔn)備
1.1. 初識(shí)Excel
Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統(tǒng)的電腦編寫的一款電子表格軟件。
1.2. 格式區(qū)別
Excel中有xls和xlsx兩種格式,它們之間的區(qū)別是:
●文件格式不同。xls是一個(gè)特有的二進(jìn)制格式,其核心結(jié)構(gòu)是復(fù)合文檔類型的結(jié)構(gòu),而xlsx的核心結(jié)構(gòu)是XML類型的結(jié)構(gòu),采用的是基于 XML的壓縮方式,使其占用的空間更小。xlsx 中最后一個(gè) x 的意義就在于此。
●版本不同。xls是Excel2003及以前版本生成的文件格式,而xlsx是Excel2007及以后版本生成的文件格式。
●兼容性不同。xlsx格式是向下兼容的,可兼容xls格式。
1.3. 庫(kù)的使用
Python自帶的模塊中有針對(duì)xls格式的xlrd和xlwt模塊,但這兩個(gè)庫(kù)僅僅是針對(duì)xls的操作,當(dāng)我們要操作xlsx格式文件時(shí),則需要使用到openpyxl第三方庫(kù)。
1.4. 整體思路
當(dāng)使用以上幾個(gè)模塊的時(shí)候,從理論上我們就可以完全操作不同格式的Excel的讀和寫,很多人就疑惑,那這篇文章的作用是什么?我們直接學(xué)習(xí)對(duì)應(yīng)的這三個(gè)模塊不就好了嗎?
答案就是:雖然這幾個(gè)庫(kù)已經(jīng)把Excel的文件、表、行、列的概念完全轉(zhuǎn)換為Python中的對(duì)象,但每次操作都需要遍歷每一個(gè)單元格,甚至很多時(shí)候我們要花費(fèi)大量的時(shí)間在思考循環(huán)單元格的邊界上,這本身就是在重復(fù)造輪子,因此我花了半天時(shí)間整理了以下六個(gè)函數(shù)。
2.代碼展示
2.1. xlz格式
2.1.1. 讀取xls格式文件
2.1.2. 寫入xls格式文件
2.1.3. 追加寫入xls格式文件
2.2. xlsx格式
2.2.1. 讀取xlsx格式文件
2.2.2. 寫入xlsx格式文件
2.2.3. 追加寫入xlsx格式文件
3.結(jié)果測(cè)試
3.1. 讀取測(cè)試
先準(zhǔn)備兩個(gè)Excel文件,如圖所示
其內(nèi)容如下:
測(cè)試代碼:
輸出結(jié)果:
結(jié)論:表明讀取并沒(méi)有問(wèn)題!!!接下來(lái)測(cè)試寫入
3.2. 寫入測(cè)試
測(cè)試代碼:
結(jié)果輸出:
看到數(shù)據(jù)被覆蓋了!!!接下來(lái)在上面修改后的數(shù)據(jù)的基礎(chǔ)上測(cè)試追加寫入
3.3. 追加寫入測(cè)試
測(cè)試代碼:
結(jié)果輸出:
追加也沒(méi)有問(wèn)題!!
4.總結(jié)
我們一直認(rèn)為數(shù)據(jù)分析就應(yīng)該以數(shù)據(jù)為主,而不應(yīng)該把大量的代碼花費(fèi)在設(shè)計(jì)Excel表格的樣式上,這樣多少就有點(diǎn)主客顛倒的意思了。總之,希望這篇文章對(duì)正在學(xué)習(xí)Python的你有一定的幫助,如果對(duì)你有幫助的話,不妨點(diǎn)個(gè)贊和收藏吧!