python操作excel

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é)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锻弓,一起剝皮案震驚了整個(gè)濱河市砾赔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌青灼,老刑警劉巖暴心,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杂拨,居然都是意外死亡专普,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門弹沽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來檀夹,“玉大人,你說我怎么就攤上這事策橘≌ǘ桑” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵丽已,是天一觀的道長蚌堵。 經(jīng)常有香客問我,道長沛婴,這世上最難降的妖魔是什么吼畏? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮嘁灯,結(jié)果婚禮上泻蚊,老公的妹妹穿的比我還像新娘。我一直安慰自己丑婿,他們只是感情好性雄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羹奉,像睡著了一般毅贮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尘奏,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機(jī)與錄音病蛉,去河邊找鬼炫加。 笑死瑰煎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俗孝。 我是一名探鬼主播酒甸,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赋铝!你這毒婦竟也來了插勤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤革骨,失蹤者是張志新(化名)和其女友劉穎农尖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體良哲,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盛卡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筑凫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滑沧。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖巍实,靈堂內(nèi)的尸體忽然破棺而出滓技,到底是詐尸還是另有隱情,我是刑警寧澤棚潦,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布令漂,位于F島的核電站,受9級特大地震影響瓦盛,放射性物質(zhì)發(fā)生泄漏洗显。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一原环、第九天 我趴在偏房一處隱蔽的房頂上張望挠唆。 院中可真熱鬧,春花似錦嘱吗、人聲如沸玄组。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俄讹。三九已至,卻和暖如春绕德,著一層夾襖步出監(jiān)牢的瞬間患膛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工耻蛇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踪蹬,地道東北人胞此。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像跃捣,于是被迫代替她去往敵國和親漱牵。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容