溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

發(fā)布時(shí)間:2021-12-07 11:34:10 來(lái)源:億速云 閱讀:141 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“Python中openpyxl模塊如何玩轉(zhuǎn)Excel”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python中openpyxl模塊如何玩轉(zhuǎn)Excel”這篇文章吧。

openpyxl 安裝

直接在命令提示符中輸入。

pip install openpyxl

或使用豆瓣鏡像安裝。

pip install -i https://pypi.douban.com/simple openpyxl

安裝成功后,下面就看看如何使用

打開/創(chuàng)建工作簿

示例工作簿 

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

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

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

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

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

(1)打開本地工作簿

>>> from openpyxl import load_workbook
>>> wb = load_workbook('獲獎(jiǎng)名單.xlsx')

(2)創(chuàng)建空的工作薄

>>> from openpyxl import Workbook
>>> wb1 = Workbook()

訪問工作表

創(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)表(即打開工作簿首先出現(xiàn)的工作表)。

>>> wb.active
<Worksheet "一等獎(jiǎng)">

獲取工作表行列信息。

>>> sheet1 = wb['一等獎(jiǎng)']
>>> sheet1.max_column
7
>>> sheet1.max_row
6

獲取單元格信息

訪問某個(gè)單元格

>>> sheet1['D3']
<Cell '一等獎(jiǎng)'.D3>
>>> sheet1.cell(row=3, column=4)
<Cell '一等獎(jiǎng)'.D3>

如果訪問單元格式添加 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

訪問多個(gè)單元格

使用切片來(lái)訪問多個(gè)單元格,這里的切片與列表切片有區(qū)別,列表切片是前閉后開,Excel 中的切片是前閉后閉。

(1)選取 A1:B2 區(qū)域的單元格。

>>> sheet1['A1':'B2']
((<Cell '一等獎(jiǎng)'.A1>,
  <Cell '一等獎(jiǎng)'.B1>),
 (<Cell '一等獎(jiǎng)'.A2>,
  <Cell '一等獎(jiǎng)'.B2>))

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

選取單列數(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(','))

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

使用公式給單元格賦值,H7 統(tǒng)計(jì)作者總?cè)藬?shù)。

>>> sheet1['H7'] = '=SUM(H1:H6)'

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

追加一行數(shù)據(jù)

使用列表按序傳入值。

>>> sheet1.append([str(n) for n in range(6)])

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

使用字典指定 列索引:列值 。

>>> sheet1.append({'A':'1','C':'3'})

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

插入空白行

在指定位置插入空白行, idx 行索引,插入的位置;amount 插入空白行的數(shù)量

>>> sheet1.insert_rows(idx=2, amount=2)

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

刪除工作表

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

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

單元格背景顏色

>>> from openpyxl.styles import PatternFill, colors
>>> sheet1["A2"].fill = PatternFill("solid", fgColor=colors.BLUE)
>>> sheet1["A3"].fill = PatternFill("solid", fgColor='FF66CC')

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

對(duì)齊方式

設(shè)置 D2 中的數(shù)據(jù) 垂直居中 和 水平居中 。

>>> from openpyxl.styles import Alignment
>>> sheet1['D2'].alignment = Alignment(horizontal='center', vertical='center')

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

行高/列寬

設(shè)置第2行行高為40,C列列寬為20。

>>> sheet1.row_dimensions[2].height = 40
>>> sheet1.column_dimensions['C'].width = 20

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

合并/拆分單元格

合并單元格只需要指定左上角和右下角的單元格坐標(biāo)。

>>> sheet.merge_cells('A1:C3')

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

拆分單元格后,合并區(qū)域的值會(huì)賦給左上角單元格A1。

>>> sheet.unmerge_cells('A1:C3')

Python中openpyxl模塊如何玩轉(zhuǎn)Excel

以上是“Python中openpyxl模塊如何玩轉(zhuǎn)Excel”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI