首先,導(dǎo)入openpyxl庫中的讀取和新建文件包(比較官方的名稱我沒有查,就按照好理解的方向這樣說),文中關(guān)于行和列的理解都是個人想法,可能有和讀者不同之處。
先詳細說怎么樣讀取單個excel文件,批量在后邊寫。
excel表格格式如下,需要弄清楚的就是excel文件路徑,以及內(nèi)部工作表的名稱,兩者均為字符串格式:
此處需要注意大小寫的問題,嚴(yán)格按照下邊代碼中的大小寫鍵入
os庫用于后邊批量處理
from openpyxl import load_workbook, Workbook #讀取=加載, 新建
import os
1、讀取已存在的excel文件
path = r'E:\pythonTest\2021-12-31.xlsx'
wb = load_workbook(path)
print(wb)
?運行結(jié)果:
<openpyxl.workbook.workbook.Workbook object at 0x000002444BC60FD0>
顯示一個對象的形式
根據(jù)文件格式,讀取其中工作表的內(nèi)容
sheet_005 = wb['0.05m']
print(sheet_005)
print(type(sheet_005))
?運行結(jié)果:
<Worksheet "0.05m">
<class 'openpyxl.worksheet.worksheet.Worksheet'>
此時,sheet_005是一個元組對象,那么要讀取其中的數(shù)據(jù)(這里可能有其他的方式,我就直接寫自己用過的,沒有詳查)需要對里邊的數(shù)據(jù)進行定位,我因為處理的關(guān)系,按行讀取和按列分別讀取,以及讀取二維的情況
按行讀?。?/h3>
rows = sheet_005['b1:j1']
#得到的內(nèi)容是1行9列
for row in rows:
for i in range(9):
print(row[i].value)
rows = sheet_005['b1:j1']
#得到的內(nèi)容是1行9列
for row in rows:
for i in range(9):
print(row[i].value)
運行結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-432988.html
45.3456
46.3456
47.3456
48.3456
49.3456
50.3456
51.3456
52.3456
53.3456
按列讀?。?/h3>
cols = sheet_005['a2:a10']
#得到的內(nèi)容是9行1列
for col in cols:
print(col[0].value)
cols = sheet_005['a2:a10']
#得到的內(nèi)容是9行1列
for col in cols:
print(col[0].value)
運行結(jié)果:
23.5167
24.5167
25.5167
26.5167
27.5167
28.5167
29.5167
30.5167
31.5167
讀取二維的情況:
path = r"E:\pythonTest\2021-12-31.xlsx"
wb = load_workbook(path)
sheet_005 = wb['0.05m']
data = sheet_005['b2:j10']
for d in data:
for i in range(9):
if d[i].value != None:
print(d[i].value)
?運行結(jié)果:
0.302119106054306
0.3005659878253937
0.2625385522842407
0.2840092778205872
0.3061999976634979
0.3017207086086273
0.3038829267024994
0.3220527768135071
0.3237947821617126
0.3207892179489136
0.3028714954853058
0.2637502551078796
0.2534836530685425
0.253666490316391
0.266710102558136
0.2634153366088867
0.2857251763343811
0.3227577209472656
0.3185969889163971
0.3055056631565094
0.2600562572479248
0.2565443217754364
0.2556202709674835
0.2537874281406403
0.2476959973573685
0.2596182227134705
0.2735748291015625
0.2842697501182556
0.2630136013031006
0.2532234787940979
0.2525502741336823
0.2542127370834351
0.2646780908107758
0.2624187767505646
0.2621198892593384
0.3370471298694611
0.3249744772911072
0.3106313049793243
0.2642513513565063
0.3019898533821106
0.2691900730133057
0.257877379655838
0.2709497213363647
0.2727532088756561
0.3150153458118439
0.3248605132102966
0.2938291728496552
0.2970251739025116
0.2867810130119324
0.3157626986503601
0.2825500667095184
0.2774896025657654
0.2862694561481476
0.2954988181591034
0.2895880043506622
0.2916149795055389
0.2997244298458099
0.299854189157486
0.3112888336181641
0.2700950503349304
0.254077821969986
0.2723859548568726
0.2887678444385529
0.2891480326652527
0.2959722280502319
0.3032049238681793
0.2998882830142975
0.2962991893291473
0.2498120218515396
0.257283478975296
0.3057393729686737
0.27692911028862
0.2761669456958771
0.2838139533996582
0.2868392765522003
0.2837753891944885
0.2908490598201752
0.2874066829681396
0.2941864132881165
0.2949732542037964
2、創(chuàng)建一個excel文件,并且將內(nèi)容寫入
new_path = r"E:\pythonTest\2022-12-08.xlsx"
new_wb = Workbook()
#新建一個sheet,title可以對sheet名稱進行修改
new_sheet_005 = new_wb.create_sheet(title = '0.05m',index = 0)
new_sheet = new_wb.create_sheet(title='這是一個工作表', index = 1)
#可以對工作表中的內(nèi)容寫入
new_sheet_005['b3'] = '1'
#存儲
new_wb.save(new_path)
運行結(jié)果:?
?3、批量對文件進行讀取
這里就是將上文中 path 的值寫到文件夾即可,利用 os 庫中的 listdir() 函數(shù)對文件進行遍歷,從而實現(xiàn)批量讀?。?/p>
還有要注意的地方就是在遍歷過程中,file 所代表的字符串只有文件名,但是 load_workbook() 函數(shù)要讀取的是文件完整的目錄,因此需要將 path 和 file 進行拼接,在這里注意 // 的轉(zhuǎn)義問題。
path = r"E:\pythonTest"
for file in os.listdir(path):
print(file)
wb = load_workbook(path+'//'+file)
sheet_005 = wb['0.05m']
print(sheet_005['b3'].value)
運行結(jié)果:
2021-12-31.xlsx
0.3207892179489136
2022-12-08.xlsx
1
批量寫入
類似的操作,但是要考慮到根據(jù)文件的內(nèi)容生成新的不同文件名,否則同名文件會覆蓋
path = r"E:\pythonTest"
for file in os.listdir(path):
new_file_name = 'new' + file[0:10] + '.xlsx'
new_wb = Workbook()
#此處index設(shè)置與前邊有所不同
new_sheet1 = new_wb.create_sheet(title='0.05m', index = 1)
new_sheet2 = new_wb.create_sheet(title='這是一個工作表', index = 0)
new_sheet1['d3'].value = 45
for i in range(1,10):
for j in range(1,10):
new_sheet1[i][0].value = i*j
new_wb.save(path+'//'+new_file_name)
這里有一點我不太清楚,就是new_sheet1[i][0] 這里的0只能寫0,我不太理解這里,但是夠我用了,所以沒有深究,如果有小伙伴看到這里能給我解答的話,不勝感謝。
運行結(jié)果:
文章來源地址http://www.zghlxwxcb.cn/news/detail-432988.html
到了這里,關(guān)于python之批量讀寫excel文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!