Python openpyxl模塊學(xué)習(xí)之輕松玩轉(zhuǎn)Excel
前言
當(dāng)你需要每天對(duì) Excel 做大量重復(fù)的操作,如果只靠人工來(lái)做既浪費(fèi)時(shí)間,又十分枯燥,好在 Python 為我們提供了許多操作 Excel 的模塊,能夠讓我們從繁瑣的工作中騰出雙手。
今天就和大家分享一個(gè)快速處理 Excel 的模塊 openpyxl,它的功能相對(duì)與其他模塊更為齊全,足夠應(yīng)對(duì)日常出現(xiàn)的問(wèn)題。
openpyxl 安裝
直接在命令提示符中輸入。
pip install openpyxl
或使用豆瓣鏡像安裝。
pip install -i https://pypi.douban.com/simple openpyxl
安裝成功后,下面就看看如何使用
打開(kāi)/創(chuàng)建工作簿
示例工作簿?

工作表【一等獎(jiǎng)】

工作表【二等獎(jiǎng)】

(1)打開(kāi)本地工作簿
>>> from openpyxl import load_workbook
>>> wb = load_workbook('獲獎(jiǎng)名單.xlsx')
(2)創(chuàng)建空的工作薄
>>> from openpyxl import Workbook >>> wb1 = Workbook()
訪問(wèn)工作表
創(chuàng)建新工作表,可指定插入的位置(0:首位,-1:末尾)。
>>> wb.create_sheet('new_sheet', 0)
<Worksheet "new_sheet">
獲取工作簿中所有工作表。
>>> wb.sheetnames ['new_sheet', '一等獎(jiǎng)', '二等獎(jiǎng)']
使用列表推導(dǎo)式遍歷獲取所有工作表名稱。
>>> [sheet.title for sheet in wb] ['new_sheet', '一等獎(jiǎng)', '二等獎(jiǎng)']
使用 wb[sheetname] 來(lái)獲取一個(gè)工作表對(duì)象
>>> wb['二等獎(jiǎng)'] <Worksheet "二等獎(jiǎng)">
獲取活動(dòng)表(即打開(kāi)工作簿首先出現(xiàn)的工作表)。
>>> wb.active <Worksheet "一等獎(jiǎng)">
獲取工作表行列信息。
>>> sheet1 = wb['一等獎(jiǎng)'] >>> sheet1.max_column 7 >>> sheet1.max_row 6
獲取單元格信息
訪問(wèn)某個(gè)單元格
>>> sheet1['D3'] <Cell '一等獎(jiǎng)'.D3> >>> sheet1.cell(row=3, column=4) <Cell '一等獎(jiǎng)'.D3>
如果訪問(wèn)單元格式添加 value 參數(shù)則會(huì)修改當(dāng)前單元格的值。
>>> sheet1.cell(3, 4).value '基于Spark、Python的醫(yī)護(hù)人員信息抽取與管理' >>> sheet1.cell(3, 4, value='Python') <Cell '一等獎(jiǎng)'.D3> >>> sheet1.cell(3, 4).value 'Python'
獲取單元格的值、坐標(biāo)、行索引、列索引。
>>> sheet1['D3'].value 'Python' >>> sheet1['D3'].coordinate 'D3' >>> sheet1['D3'].row 3 >>> sheet1['D3'].column 4
訪問(wèn)多個(gè)單元格
使用切片來(lái)訪問(wèn)多個(gè)單元格,這里的切片與列表切片有區(qū)別,列表切片是前閉后開(kāi),Excel 中的切片是前閉后閉。
(1)選取 A1:B2 區(qū)域的單元格。
>>> sheet1['A1':'B2'] ((<Cell '一等獎(jiǎng)'.A1>, <Cell '一等獎(jiǎng)'.B1>), (<Cell '一等獎(jiǎng)'.A2>, <Cell '一等獎(jiǎng)'.B2>))

選取單列數(shù)據(jù)。
>>> sheet1['D']
(<Cell '一等獎(jiǎng)'.D1>,
...
<Cell '一等獎(jiǎng)'.D6>)
選取B,C列數(shù)據(jù)。
>>> sheet1['B:C']
((<Cell '一等獎(jiǎng)'.B1>,
...
<Cell '一等獎(jiǎng)'.B6>),
(<Cell '一等獎(jiǎng)'.C1>,
...
<Cell '一等獎(jiǎng)'.C6>))
選取單行數(shù)據(jù)。
>>> sheet1[3]
(<Cell '一等獎(jiǎng)'.A3>,
<Cell '一等獎(jiǎng)'.B3>,
...
<Cell '一等獎(jiǎng)'.F3>,
<Cell '一等獎(jiǎng)'.G3>)
選取第2,3行數(shù)據(jù)。
>>> sheet1[2:3]
((<Cell '一等獎(jiǎng)'.A2>,
...
<Cell '一等獎(jiǎng)'.G2>),
(<Cell '一等獎(jiǎng)'.A3>,
...
<Cell '一等獎(jiǎng)'.G3>))
遍歷獲取數(shù)據(jù)
按行遍歷指定范圍(B2:C3)數(shù)據(jù)。
>>> for row in sheet1.iter_rows(min_row=2, max_row=3, min_col=2, max_col=3):
for cell in row:
print(cell.coordinate)
B2
C2
B3
C3
按列遍歷指定范圍(B2:C3)數(shù)據(jù)。
>>> for col in sheet1.iter_cols(min_row=2, max_row=3, min_col=2, max_col=3):
for cell in col:
print(cell.coordinate)
B2
B3
C2
C3
如果 iter_rows()/iter_cols() 中指定參數(shù) values_only=True,那么將只返回單元格的值
按行遍歷所有數(shù)據(jù)。
>>> tuple(sheet1.rows) ((<Cell '一等獎(jiǎng)'.A1>, ... <Cell '一等獎(jiǎng)'.G1>), ... ... (<Cell '一等獎(jiǎng)'.A6>, ... <Cell '一等獎(jiǎng)'.G6>))
按列遍歷所有數(shù)據(jù)。
>>> tuple(sheet1.columns) ((<Cell '一等獎(jiǎng)'.A1>, ... <Cell '一等獎(jiǎng)'.A6>), ... ... (<Cell '一等獎(jiǎng)'.G1>, ... <Cell '一等獎(jiǎng)'.G6>))
修改工作表
單元格賦值
新增一列計(jì)算 作者 人數(shù)。
>>> for row_index in range(2, sheet1.max_row + 1):
sheet1.cell(row_index, 8).value = len(sheet1.cell(row_index, 6).value.split(','))

使用公式給單元格賦值,H7 統(tǒng)計(jì)作者總?cè)藬?shù)。
>>> sheet1['H7'] = '=SUM(H1:H6)'

追加一行數(shù)據(jù)
使用列表按序傳入值。
>>> sheet1.append([str(n) for n in range(6)])

使用字典指定 列索引:列值 。
>>> sheet1.append({'A':'1','C':'3'})

插入空白行
在指定位置插入空白行, idx 行索引,插入的位置;amount 插入空白行的數(shù)量
>>> sheet1.insert_rows(idx=2, amount=2)

刪除工作表
>>> wb.remove(wb['new_sheet'])
保存工作簿
>>> wb.save('獲獎(jiǎng)名單V1.xlsx')
修改樣式
字體
設(shè)置 B2 單元格字體格式為,顏色可以用十六進(jìn)制顏色代碼。
>>> from openpyxl.styles import Font >>> new_font = Font(name='微軟雅黑', size=20, color='3333CC', bold=True) >>> sheet1['B2'].font = new_font

單元格背景顏色
>>> from openpyxl.styles import PatternFill, colors
>>> sheet1["A2"].fill = PatternFill("solid", fgColor=colors.BLUE)
>>> sheet1["A3"].fill = PatternFill("solid", fgColor='FF66CC')

對(duì)齊方式
設(shè)置 D2 中的數(shù)據(jù) 垂直居中 和 水平居中 。
>>> from openpyxl.styles import Alignment >>> sheet1['D2'].alignment = Alignment(horizontal='center', vertical='center')

行高/列寬
設(shè)置第2行行高為40,C列列寬為20。
>>> sheet1.row_dimensions[2].height = 40 >>> sheet1.column_dimensions['C'].width = 20

合并/拆分單元格
合并單元格只需要指定左上角和右下角的單元格坐標(biāo)。
>>> sheet.merge_cells('A1:C3')

拆分單元格后,合并區(qū)域的值會(huì)賦給左上角單元格A1。
>>> sheet.unmerge_cells('A1:C3')

以上就是Python openpyxl模塊學(xué)習(xí)之輕松玩轉(zhuǎn)Excel的詳細(xì)內(nèi)容,更多關(guān)于Python openpyxl模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python學(xué)習(xí)Turtle庫(kù)畫(huà)對(duì)稱勾股樹(shù)體會(huì)分形驚艷
這篇文章主要為大家介紹了Python學(xué)習(xí)中如何使用Turtle庫(kù)畫(huà)對(duì)稱勾股樹(shù),從而體會(huì)到分形世界的驚艷,文中附含詳細(xì)示例代碼有需要的朋友可以借鑒參考下2021-09-09
使用python-opencv讀取視頻,計(jì)算視頻總幀數(shù)及FPS的實(shí)現(xiàn)
今天小編就為大家分享一篇使用python-opencv讀取視頻,計(jì)算視頻總幀數(shù)及FPS的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
詳解selenium + chromedriver 被反爬的解決方法
這篇文章主要介紹了詳解selenium + chromedriver 被反爬的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
python time.strptime格式化實(shí)例詳解
在本篇文章里小編給大家整理的是一篇關(guān)于python time.strptime格式化實(shí)例詳解內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。2021-02-02
Python簡(jiǎn)單實(shí)現(xiàn)詞云圖代碼及步驟解析
這篇文章主要介紹了Python簡(jiǎn)單實(shí)現(xiàn)詞云圖代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python之Selenium自動(dòng)化瀏覽器測(cè)試詳解
這篇文章主要為大家詳細(xì)介紹了Python自動(dòng)化瀏覽器測(cè)試,使用Selenium,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01

