欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?操作Excel-openpyxl模塊用法實(shí)例

 更新時(shí)間:2023年05月06日 14:33:54   作者:塵世風(fēng)  
openpyxl 模塊是一個(gè)讀寫 Excel 2010 文檔的 Python 庫(kù),如果要處理更早格式的 Excel 文 檔,需要用到額外的庫(kù),openpyxl 是一個(gè)比較綜合的工具,能夠同時(shí)讀取和修改 Excel 文檔,這篇文章主要介紹了Python?操作Excel-openpyxl模塊使用,需要的朋友可以參考下

openpyxl 的用法實(shí)例

1.1 Openpyxl 庫(kù)的安裝使用

openpyxl 模塊是一個(gè)讀寫 Excel 2010 文檔的 Python 庫(kù),如果要處理更早格式的 Excel 文 檔,需要用到額外的庫(kù),openpyxl 是一個(gè)比較綜合的工具,能夠同時(shí)讀取和修改 Excel 文檔。 其他很多的與 Excel 相關(guān)的項(xiàng)目基本只支持讀或者寫 Excel 一種功能。新建、讀取、保存工 作簿。

1.2 Excel 的新建、讀取、保存

1.2.1 新建保存工作簿(覆蓋創(chuàng)建)

新建:openpyxl.Workbook(),注意這個(gè)的 W 是大寫的(本人吃過虧),可以設(shè)置 write_only=True/False 的讀寫方式,默認(rèn)是可寫。 保存:workbook.save('工作簿名.xlsx')

from openpyxl import Workbook
wb=Workbook() # 新建工作簿
wb.save('我的工作簿.xlsx') # 相對(duì)路徑保存工作簿

每個(gè) workbook 創(chuàng)建后,默認(rèn)會(huì)存在一個(gè) sheet。也可以自行創(chuàng)建新的 sheet。

1.2.2 讀取保存工作簿

讀取工作簿:
openpyxl.load_workbook('工作簿名.xlsx'),注意以下相關(guān)參數(shù)的設(shè)置。
read_only=False/True False 表示可以讀、寫,True 表示只能讀、不能寫。
guess_types=False/True False 表示轉(zhuǎn)換數(shù)據(jù),True 表示不能轉(zhuǎn)換數(shù)據(jù)。
data_only=False/True False 表示序單元格的真實(shí)信息,True 表示只讀取值。

from openpyxl import load_workbook
wb=load_workbook('成績(jī)表-1.xlsx') # 讀取 工作簿
wb.save('成績(jī)表-2.xlsx') # 保 存工作簿

1.2.3 實(shí)例(批量建新工作簿)

from openpyxl import Workbook 
for m in range(1,13): 
    wb = Workbook()  # 新建工作簿
    wb.save('%d 月.xlsx'%m)# 保存工作簿

1.3 工作表對(duì)象的獲取方法

1.3.1 工作表獲取方式:

獲取當(dāng)前活動(dòng)工作表的:

sheet = wb.active

以索引值方式獲取工作表:

sheet= wb.worksheets[2]

以工作表名獲?。?wb['工作表名'],注意,此表達(dá)方式為切片顯示,所以沒有成員提示。很少用

sheet = wb["Sheet-甲乙-甲乙"]

循環(huán)工作表:很好用,一般用sheetnames

wb = wb.worksheets

獲取所有工作表名:wb.sheetnames

wb4 = wb.sheetnames

獲取指定工作表名

wb7 = wb.sheetnames[2].title()

修改工作表名稱

import openpyxl
wb = openpyxl.load_workbook('我的工作簿.xlsx')
# wb[wb.sheetnames[1]].title = '南京'
sh_name = wb.sheetnames  # 獲取所有sheet
sh = wb[sh_name[1]]
sh.title = "南京"
sheet = wb.sheetnames[1].title()
wb.save('我的工作簿.xlsx')
print(sheet)

1.3.2 實(shí)例(批量修改工作表名)

import openpyxl
wb = openpyxl.load_workbook('各年業(yè)績(jī)表.xlsx')
for sh in wb.worksheets:
    sh.title = sh.title + '-芝華公司'
wb.save('各年業(yè)績(jī)表(修改后).xlsx')

1.4 工作表的新建、復(fù)制、刪除

1.4.1 新建工作表

可以在新建的工作簿中新建工作表(在新建工作簿時(shí),會(huì)默認(rèn)新建一個(gè)工作表)。也能在已經(jīng)存在的工作簿中新建工作表。

新建工作表時(shí)的默認(rèn)工作表名:

wb.create_sheet()  #默認(rèn)工作表名為 Sheet1、 Sheet2、 Sheet3……
wb8 = wb.create_sheet('工作表名',指定位置)

1.4.2 復(fù)制工作表

wb.copy_worksheet(wb.worksheets[3])

1.4.3 刪除工作表

workbook.remove(工作表)

wb.remove(wb.worksheets[2])

1.5 關(guān)于工作表的實(shí)例應(yīng)用

1.5.1 實(shí)例應(yīng)用(批量新建12個(gè)月工作表)

import openpyxl
wb = openpyxl.Workbook()  # 新建工作簿
for m in range(1, 13):
    wb.create_sheet('%d 月' % m)  # 新建月份工作表
wb.remove(wb['Sheet'])  # 刪除 指定工作表
wb.save('2022 年計(jì)劃表.xlsx')  # 保存工作簿。

1.5.2 實(shí)例應(yīng)用(刪除不符合條件的工作表)

import openpyxl 
wb=openpyxl.load_workbook('2021 年.xlsx')  # 讀取 工作簿
for sh in wb: # 循環(huán) 工作簿中的工作表
    if sh.title.split('-')[0]!='北京': # 判斷 工作表是否不等于北京
          wb.remove(sh) # 刪除 工作表
wb.save('北京.xlsx') # 保 存工作簿

1.5.3 實(shí)例應(yīng)用(批量復(fù)制工作表)

import openpyxl
wb = openpyxl.load_workbook('模板.xlsx')
for m in range(1, 13):
    wb.copy_worksheet(wb['測(cè)試']).title = '%d 月' % m
    wb.remove(wb['測(cè)試'])
wb.save('2018 年各月表格.xlsx')

以上是處理工作表的方式

以下是處理單元格的方法

1.6 單元格信息獲取

1.6.1 單元格數(shù)據(jù)獲取

A1 表示法:工作表['A1'],R1C1 表示法:工作表.cell(行號(hào),列號(hào))

import openpyxl
wb = openpyxl.load_workbook("各年業(yè)績(jī)表.xlsx")
ws = wb.worksheets[0]   #不能使sheetnames
sh2 = ws["a1"].value    #必須是小寫
print(sh2)
sh = ws.cell(1,1).value
print(sh)

1.6.2 實(shí)例應(yīng)用(匯總各表各單元格數(shù)據(jù))

import openpyxl
wb = openpyxl.load_workbook('各年業(yè)績(jī)表.xlsx')
print(sum([s['b14'].value for s in wb]))
print(sum([s.cell(14,2).value for s in wb]))

1.7 單元格區(qū)域信息獲取

1.7.1 單元格區(qū)域數(shù)據(jù)獲取

1.工作表['起始單元格': '終止單元格']或工作表['起始單元格: 終止單元格'],此方法是按行讀取的數(shù)據(jù)。

import openpyxl
wb = openpyxl.load_workbook('demo.xlsx')
sh = wb["天峰集團(tuán)"]
s = sh["a1":"a2"]
print(s)
wb.save("demo.xlsx")

2.工作表['起始行號(hào)': '結(jié)束行號(hào)']或者工作表['起始行號(hào): 結(jié)束行號(hào)'],此方法是按行讀取的數(shù)據(jù)。

import openpyxl
wb = openpyxl.load_workbook('demo.xlsx')
sh = wb["天峰集團(tuán)"]
s = sh["1:3"]
print(s)
wb.save("demo.xlsx")

3.工作表['起始列號(hào)': '結(jié)束列號(hào)']或者工作表['起始列號(hào): 結(jié)束列號(hào)'],
此方法是按列讀取的數(shù)據(jù)。

import openpyxl
wb = openpyxl.load_workbook('demo.xlsx')
sh = wb["天峰集團(tuán)"]
s = sh["a:w"]
print(s)
wb.save("demo.xlsx")

4.獲取(按行)指定工作表所有已用數(shù)據(jù):
list(workbook.worksheets[索引值].values)

print([[c.value for c in row] for row in ws['a1:d3']])

1.7.2 實(shí)例應(yīng)用

按行求和(方法 1)

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.active
rngs=ws['a2:e71']
print(['%s-%d'%(row[0].value,sum([c.value for c in row][1:])) for row in rngs])

按行求和(方法 )

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.active
print(['%s-%d'%(row[0],sum(row[1:])) for row in list(ws.values)[1:]])

按列統(tǒng)計(jì)平均值

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.active
f=[sum(l)/len(l) for l in list(zip(*list(ws.values)[1:]))[1:]]
n=[c.value for c in ws['1']][1:]
print(['%s-%.2f'%c for c in list(zip(n,f))])
print(['%s-%.2f'%(l[0],sum(l[1:])/len(l[1:])) for l in list(zip(*list(ws.values)))[1:]])

1.8 行列信息獲取

1.8.1 行列信息獲取

按行獲取工作表使用區(qū)域數(shù)據(jù):worksheet.rows

按列獲取工作表使用區(qū)域數(shù)據(jù):worksheet.columns
獲取工作表中最小行號(hào):worksheet.min_row
獲取工作表中最小列號(hào):worksheet.min_column
獲取工作表中最大行號(hào):worksheet.max_row
獲取工作表中最大列號(hào):worksheet.max_column
獲取單元格的行號(hào):cell.row
獲取單元格的列號(hào):cell.column iter
方法獲取指定區(qū)域:
1.按行獲取指定工作表單元格區(qū)域:worksheet.iter_rows(……)
2.按列獲取指定工作表單元格區(qū)域:worksheet.iter_cols(……)
可以通過 min_row、min_col、max_col、max_row 這幾個(gè)參數(shù)進(jìn)行單元格區(qū)域的控制

import openpyxl
wb=openpyxl.load_workbook('demo.xlsx')
ws=wb.active
minr=ws.min_row
minc=ws.min_column
maxr=ws.max_row
maxc=ws.max_column
rngs=ws.iter_rows(min_row=minr+1,min_col=minc+2,max_row=maxr-1,max_col=maxc-1)
col=ws.iter_cols(min_row=minr+1,min_col=minc+1,max_row=maxr-1,max_col=minc+1)
total=([sum([v.value for v in row]) for row in rngs])
cp=([[v.value for v in row] for row in col][0])
print(list(zip(cp,total)))

1.8.2 實(shí)例應(yīng)用

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[0]
for row in ws.iter_rows(min_row=36,min_col=2,max_col=4,max_row=40):
    print([c.value for c in row])
import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[0]
for row in list(ws.rows)[1:]:
    l=[v.value for v in row]
    print(l[0],sum(l[1:]))
import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[0]
for col in list(ws.columns)[1:]:
    l=[v.value for v in col]
    print(l[0],max(l[1:]))
import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[0]
total=[sum([c.value for c in row]) for row in ws.iter_rows(min_col=2,min_row=2)]
name=[c.value for c in ws['a']][1:]
print(list(zip(name,total)))
import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[0]
total=[sum([c.value for c in col]) for col in ws.iter_cols(min_col=2,min_row=2)]
name=[c.value for c in ws[1][1:]]
print(list(zip(name,total)))

單元格的寫入

1.9.1 單元格與區(qū)域數(shù)據(jù)寫入

A1 表示法:工作表['A1']=值,R1C1 表示法:工作表.cell(行號(hào),列號(hào),值)

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[1]
s = ws['a1']=123
ws.cell(2,3,'我是中國(guó)人')
ws.cell(3,3).value='我是四川人'
print(s)
wb.save('test.xlsx')

1.9.2 實(shí)例應(yīng)用(九九乘法表)

import openpyxl
wb=openpyxl.Workbook()
ws=wb.active
ws.title='九九表'
for x in range(1,10):
    for y in range(1,x+1):
        ws.cell(x,y,f'{y}×{x}={x*y}')
wb.save('九九表.xlsx')

1.10 批量寫入數(shù)據(jù)

1.10.1 按行寫入數(shù)據(jù) (追加)

在最后一行寫入數(shù)據(jù):工作表.append(列表)

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[0]
ws.append({'a':'張三','b':56,'c':'fdgsfg'})
wb.save('test.xlsx')

1.10.2 實(shí)例應(yīng)用(九九乘法表)

wb=openpyxl.load_workbook('demo.xlsx')
ws=wb.active
# for r in [['%d*%d=%d'%(y,x,x*y) for y in range(1,x+1)] for x in range(1,10)]:
#     ws.append(r)
# ws.delete_rows(1)
# wb.save('demo.xlsx')
for row in ws['a1:c6']:
    for c in row:
        c.value=1
wb.save('demo.xlsx')

1.11 循環(huán)方式批量寫入數(shù)據(jù)

1.11.1 循環(huán)獲取單元格對(duì)象,再寫入

之前我們可以通過組合單元格來獲取或者寫入數(shù)據(jù),但還有一種方法,就是直接循環(huán)單 元格區(qū)域來寫入數(shù)據(jù)。與循環(huán)讀取的表示方式基本相同,只是多了一個(gè)賦值。

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.worksheets[0]
for row in ws['a1:g9']:
    print(row)
    for c in row:
        print(c.value)
wb.save('test.xlsx')

1.11.2 實(shí)例應(yīng)用(大于等于 90 分為優(yōu)秀)

import openpyxl
wb=openpyxl.load_workbook('demo.xlsx')
ws=wb.active
rngs=ws.row("2:2")
for row in rngs:
    for c in row:
        if c.value>=90:
            c.value=str(c.value)+'(優(yōu)秀)'
wb.save('demo1.xlsx')

1.11.3 實(shí)例應(yīng)用(每個(gè)人的總分大于等于300為優(yōu)秀)

最后加一列寫優(yōu)秀

import openpyxl
wb=openpyxl.load_workbook('demo.xlsx')
ws=wb.active
rngs=ws.iter_rows(min_row=2,min_col=2)
for row in rngs:
        sm=sum([c.value for c in row][0:4])
        if sm>=300:
            row[-1].value='優(yōu)秀' #切片用的多
wb.save('demo2.xlsx')

到此這篇關(guān)于Python 操作Excel-openpyxl模塊使用的文章就介紹到這了,更多相關(guān)Python Excel-openpyxl模塊使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python PIL圖片添加字體的例子

    Python PIL圖片添加字體的例子

    今天小編就為大家分享一篇Python PIL圖片添加字體的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python完成哈夫曼樹編碼過程及原理詳解

    Python完成哈夫曼樹編碼過程及原理詳解

    這篇文章主要介紹了Python完成哈夫曼樹編碼過程及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python?密碼驗(yàn)證(滑塊驗(yàn)證)

    python?密碼驗(yàn)證(滑塊驗(yàn)證)

    滑塊密碼在很多登錄界面都可以看到,本文主要介紹了python?密碼驗(yàn)證(滑塊驗(yàn)證),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python字符串三種格式化輸出

    Python字符串三種格式化輸出

    這篇文章主要介紹了Python字符串三種格式化輸出,需要的朋友可以參考下
    2020-09-09
  • 如何用python合并多個(gè)有規(guī)則命名的nc文件

    如何用python合并多個(gè)有規(guī)則命名的nc文件

    在地學(xué)領(lǐng)域,nc格式的文件可謂隨處可見,這種文件可以存儲(chǔ)多維數(shù)字矩陣,下面這篇文章主要給大家介紹了關(guān)于如何用python合并多個(gè)有規(guī)則命名的nc文件的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法

    10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法

    這篇文章主要介紹了10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python3 模塊、包調(diào)用&路徑詳解

    Python3 模塊、包調(diào)用&路徑詳解

    下面小編就為大家?guī)硪黄狿ython3 模塊、包調(diào)用&路徑詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 簡(jiǎn)單談?wù)凱ython中的模塊導(dǎo)入

    簡(jiǎn)單談?wù)凱ython中的模塊導(dǎo)入

    Python 模塊(Module),是一個(gè) Python 文件,以 .py 結(jié)尾,包含了 Python對(duì)象定義和Python語句,下面這篇文章主要給大家介紹了關(guān)于Python模塊導(dǎo)入的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Python高效編程技巧

    Python高效編程技巧

    我已經(jīng)使用Python編程有多年了,即使今天我仍然驚奇于這種語言所能讓代碼表現(xiàn)出的整潔和對(duì)DRY編程原則的適用。這些年來的經(jīng)歷讓我學(xué)到了很多的小技巧和知識(shí),大多數(shù)是通過閱讀很流行的開源軟件,如Django, Flask, Requests中獲得的
    2013-01-01
  • python數(shù)字圖像處理之圖像簡(jiǎn)單濾波實(shí)現(xiàn)

    python數(shù)字圖像處理之圖像簡(jiǎn)單濾波實(shí)現(xiàn)

    這篇文章主要為大家介紹了python數(shù)字圖像處理之圖像簡(jiǎn)單濾波實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評(píng)論