10分钟学会用Python轻松玩转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')對(duì)比Excel系列圖書累積銷量達(dá)15w冊(cè),讓你輕松掌握數(shù)據(jù)分析技能,感興趣的同學(xué)可以直接在各大電商平臺(tái)搜索書名了解:
總結(jié)
以上是生活随笔為你收集整理的10分钟学会用Python轻松玩转Excel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一键绑卡 无界支付 魅族Flyme Pa
- 下一篇: 如何利用数据分析买到好房子?