1.openpyxl簡介
? ? openpyxl是一個(gè)開源項(xiàng)目绍申,openpyxl模塊是一個(gè)讀寫Excel 2010文檔的Python庫携添,如果要處理更早格式的Excel文檔抑钟,需要用到其它庫(如:xlrd、xlwt等)芽卿,這是openpyxl比較其他模塊的不足之處。openpyxl是一款比較綜合的工具胳搞,不僅能夠同時(shí)讀取和修改Excel文檔卸例,而且可以對Excel文件內(nèi)單元格進(jìn)行詳細(xì)設(shè)置,包括單元格樣式等內(nèi)容流酬,甚至還支持圖表插入币厕、打印設(shè)置等內(nèi)容,使用openpyxl可以讀寫xltm, xltx, xlsm, xlsx等類型的文件芽腾,且可以處理數(shù)據(jù)量較大的Excel文件旦装,跨平臺處理大量數(shù)據(jù)是其它模塊沒法相比的。因此摊滔,openpyxl成為處理Excel復(fù)雜問題的首選庫函數(shù)阴绢。
2.環(huán)境準(zhǔn)備
安裝python? https://www.python.org/ 下載地址
安裝openpyxl模塊 使用命令 pip install openpyxl
(對于開發(fā)人員來說我們會(huì)在一些成熟的IDE(例如Pycharm,Visual Studio)中進(jìn)行代碼的編輯艰躺,但是由于本次培訓(xùn)只是簡單的進(jìn)行這方面技術(shù)的介紹呻袭,所以直接使用了自帶的編輯器)
3.簡單使用
? ? 因?yàn)橐褂胦penpyxl所以首先要引入模塊:
>>> from openpyxl
? ? 然后我們可以通過Workbook()函數(shù)建立一個(gè)工作簿對象,這個(gè)工作簿對象包含了excel文件里的所有信息腺兴,通過運(yùn)行下列代碼我們可以創(chuàng)建一個(gè)excel文件:
wb = openpyxl.Workbook()
wb.create_sheet("sheet1",0)
wb.create_sheet("sheet2",0)
wb.save("test.xlsx")
? ? 通過函數(shù)的名稱我們可以直觀的明白它的作用左电,建表操作create_sheet(表名,表的位置)页响,保存操作save(文件名)
? ? 通過運(yùn)行上述代碼篓足,我們獲得了一個(gè)test.xlsx文件,因?yàn)槲覀冊诒4嫠臅r(shí)候沒有給它賦予太多的屬性所以它只包含三張空表【sheet2,sheet1闰蚕,sheet】栈拖,現(xiàn)在我們通過這個(gè)文件來進(jìn)行讀取excel信息的操作
wb = openpyxl.load_workbook("test.xlsx") #加載文件到對象
wb.sheetnames #文件中的所有表名
4.對Excel的各種寫操作
sheet1 = wb['sheet1']
sheet1['A1']="i am sheet1"? ? #填寫sheet1的A1單元格內(nèi)容
sheet1['A1'].font=openpyxl.styles.Font(color="FF0000") #設(shè)置主體顏色
sheet1['A1'].font=openpyxl.styles.Font(color="FF0000",size=15,bold=True) #字體樣式設(shè)置,還有其他屬性可以查看Font對象
sheet1['A1'].fill=openpyxl.styles.PatternFill("solid",fgColor="00FF00")#設(shè)置背景顏色
? ? 接下來我們我們進(jìn)行一個(gè)排序操作没陡,通過查看官方文檔可以知道排序的函數(shù)為ws.auto_filter.add_sort_condition(區(qū)間,正逆序)
wb = openpyxl.load_workbook("test.xlsx") #加載文件到對象
sheet2 = wb['sheet2']
i = 1
while i<10 :
? sheet2["B"+str(i)] = i
? i+=1
sheet2.auto_filter.ref="B1:B10"
sheet2.auto_filter.add_sort_condition("B1:B10",descending=True)
sheet2.auto_filter.add_filter_column()
wb.save("test.xlsx")
通過上述操作會(huì)有逆序圖標(biāo)出現(xiàn)涩哟,但是實(shí)際并沒有執(zhí)行排序操作索赏。這會(huì)將相關(guān)指令添加到文件中,但實(shí)際上不會(huì)過濾或排序,這是官方描述.(發(fā)現(xiàn)通過excel軟件里數(shù)據(jù)里的按鈕重新應(yīng)用來使排序生效)贴彼。
5.對Excel的各種讀操作
wb = openpyxl.load_workbook("test.xlsx") #加載文件到對象
sheet2 = wb['sheet2']
#讀取B1:B10的值
cells=sheet2["B1":"B10"]
for cell in cells:
? ? ? print(cell[0].value)
sheet2.max_column #最大列數(shù)
sheet2.max_row #最大行數(shù)
sheet1["A1"].fill #背景顏色對象
sheet["A1"].font #字體對象
6.簡單使用例子
將上述文件中字母的單元格背景置成顏色1潜腻,將,偶數(shù)的單元格背景置成顏色2,奇數(shù)的單元格背景置成顏色3
import openpyxl
letters="ABCDEF"
color1 = openpyxl.styles.PatternFill("solid", fgColor="ff0000")
color2 = openpyxl.styles.PatternFill("solid", fgColor="00ff00")
color3 = openpyxl.styles.PatternFill("solid", fgColor="0000ff")
wb = openpyxl.load_workbook("test2.xlsx")? # 加載文件到對象
sheet1 = wb['Sheet1']
for row in sheet1.rows:
? ? ? for cell in row:
? ? ? ? ? ? ? if str(cell.value) in letters:
? ? ? ? ? ? cell.fill = color1
? ? ? ? else:
? ? ? ? ? ? if cell.value % 2==0:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell.fill = color2
? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell.fill = color3
wb.save("test3.xlsx")
完結(jié)