如何在python中使用openpyxl庫(kù)讀寫Excel.xlsx文件(有參考列程)
前言
Python中,讀寫.xlsx文件(即Excel 2007及以后版本的文件)常用的庫(kù)有openpyxl和pandas。openpyxl提供了對(duì)Excel工作簿、工作表、單元格等的底層操作,而pandas則提供了更高級(jí)的數(shù)據(jù)處理和分析功能,同時(shí)支持讀寫Excel文件。
如果列程沒(méi)有看懂,文章后半部分有詳細(xì)教程
讀取.xlsx文件
import openpyxl
# 打開Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 獲取活動(dòng)工作表(通常是第一個(gè)工作表)
sheet = workbook.active
# 讀取單元格數(shù)據(jù)
cell_value = sheet['A1'].value
print(cell_value)
# 讀取整行或整列數(shù)據(jù)
row_values = [cell.value for cell in sheet[1]] # 第一行數(shù)據(jù)
column_values = [sheet[f'A{i}'].value for i in range(1, sheet.max_row + 1)] # A列數(shù)據(jù)
# 遍歷所有單元格數(shù)據(jù)
for row in sheet.iter_rows(values_only=True):
print(row)寫入.xlsx文件
import openpyxl
# 創(chuàng)建一個(gè)新的Excel工作簿
workbook = openpyxl.Workbook()
# 獲取活動(dòng)工作表
sheet = workbook.active
# 寫入單元格數(shù)據(jù)
sheet['A1'] = 'Hello'
sheet['B1'] = 'World'
# 保存Excel文件
workbook.save('output.xlsx')使用openpyxl來(lái)更新一個(gè)已經(jīng)存在的.xlsx文件中的單個(gè)單元格,而不改變其他
import openpyxl
# 加載現(xiàn)有的Excel文件
workbook = openpyxl.load_workbook('existing_file.xlsx')
# 選擇要修改的工作表,這里假設(shè)是第一個(gè)工作表
sheet = workbook.worksheets[0]
# 找到并修改特定的單元格,這里以A1為例
cell = sheet['A1']
cell.value = '新的值'
# 保存修改后的工作簿,這里會(huì)覆蓋原文件,如果需要保留原文件,請(qǐng)另存為新文件
workbook.save('existing_file.xlsx')綜合應(yīng)用:時(shí)刻數(shù)值記錄,每天生成個(gè)excel文件,以當(dāng)天的時(shí)間命名文件的名字,每隔2s在excel文檔中記錄一個(gè)數(shù)字,每次記錄不覆蓋原始的數(shù)據(jù)
import openpyxl
import time
import os
import random
current_time = time.strftime('%Y-%m-%d')
# 文件路徑
file_path = str(str(current_time)+".xlsx")
# 判斷文件是否存在
if os.path.exists(file_path):
print(f"{file_path} 文件存在")
# workbook = openpyxl.load_workbook('AA.xlsx') # 加載已存在的工作簿
workbook = openpyxl.load_workbook(file_path)
else:
print(f"{file_path} 文件不存在")
workbook = openpyxl.Workbook() # 創(chuàng)建一個(gè)新的工作簿
# 獲取活動(dòng)工作表
sheet = workbook.active
print(sheet['AA1'].value)
if sheet['AA1'].value == None:
start_row = 1
else:
start_row = sheet['AA1'].value+1
while True:
# 獲取當(dāng)前時(shí)間并格式化
current_time = time.strftime('%H:%M:%S')
# %Y - %m - %d
content = random.randint(1, 999)
# 將時(shí)間和內(nèi)容寫入工作表
sheet.cell(row=start_row, column=1, value=current_time)
sheet.cell(row=start_row, column=2, value=content)
sheet['AA1'].value = start_row
workbook.save(file_path) # 保存工作簿
start_row += 1 # 更新起始行以便下次寫入新行
time.sleep(2)
column_values = [str(sheet[f'A{i}'].value)+"-"+ str(sheet[f'B{i}'].value) for i in range(start_row-5 , start_row)]
print(column_values)程序運(yùn)行后會(huì)在程序所在的文件夾產(chǎn)生一個(gè)excel的表格,記錄每隔2s產(chǎn)生的隨機(jī)數(shù)

Python讀寫xlsx文件詳解
在數(shù)據(jù)處理和分析的過(guò)程中,Excel文件由于其直觀的表格形式以及易操作的特點(diǎn),被廣泛應(yīng)用于各個(gè)行業(yè)和領(lǐng)域。而Python作為一種強(qiáng)大的編程語(yǔ)言,自然也提供了多種處理Excel文件的庫(kù)。其中,openpyxl庫(kù)就是專門用于讀寫.xlsx文件的Python庫(kù)。本文將詳細(xì)介紹如何使用openpyxl庫(kù)來(lái)讀寫xlsx文件。
一、安裝openpyxl庫(kù)
在使用openpyxl庫(kù)之前,首先需要確保已經(jīng)安裝了這個(gè)庫(kù)??梢允褂胮ip來(lái)安裝:
pip install openpyxl
二、讀取xlsx文件
加載工作簿
使用openpyxl.load_workbook()函數(shù)來(lái)加載一個(gè)已經(jīng)存在的xlsx文件:
from openpyxl import load_workbook
workbook = load_workbook('example.xlsx')獲取工作表
一個(gè)Excel文件可以包含多個(gè)工作表(Sheet),通過(guò)workbook.sheetnames可以獲取所有工作表的名稱列表,通過(guò)workbook[sheet_name]或workbook.active可以獲取對(duì)應(yīng)的工作表對(duì)象。
sheet_names = workbook.sheetnames # 獲取所有工作表名稱 sheet = workbook['Sheet1'] # 獲取名為'Sheet1'的工作表 # 或者使用active屬性獲取活動(dòng)工作表 active_sheet = workbook.active
讀取單元格數(shù)據(jù)
通過(guò)工作表的cell()方法或直接使用單元格坐標(biāo),可以讀取單元格的數(shù)據(jù)。
# 使用cell()方法 cell_value = sheet.cell(row=1, column=1).value # 讀取第一行第一列的數(shù)據(jù) # 使用單元格坐標(biāo) cell_value = sheet['A1'].value # 同樣讀取第一行第一列的數(shù)據(jù)
遍歷工作表數(shù)據(jù)
如果需要遍歷整個(gè)工作表的數(shù)據(jù),可以使用iter_rows()或iter_cols()方法。
for row in sheet.iter_rows(values_only=True):
print(row) # 打印每一行的數(shù)據(jù)三、寫入xlsx文件
創(chuàng)建工作簿和工作表
使用openpyxl.Workbook()可以創(chuàng)建一個(gè)新的工作簿,并默認(rèn)創(chuàng)建一個(gè)活動(dòng)工作表。
from openpyxl import Workbook workbook = Workbook() sheet = workbook.active
寫入單元數(shù)據(jù)
與讀取單元格數(shù)據(jù)類似,可以使用cell()方法或直接使用單元格坐標(biāo)來(lái)寫入數(shù)據(jù)。
sheet['A1'] = 'Hello' # 在第一行第一列寫入'Hello' sheet.cell(row=2, column=2, value='World') # 在第二行第二列寫入'World'
保存工作簿
使用workbook.save()方法將修改后的工作簿保存到文件。
workbook.save('output.xlsx') # 將工作簿保存為output.xlsx文件四、注意事項(xiàng)
- 在讀取和寫入xlsx文件時(shí),注意文件的路徑和名稱是否正確。
- 如果需要處理大量數(shù)據(jù),建議使用pandas庫(kù)來(lái)處理Excel文件,它提供了更強(qiáng)大和靈活的數(shù)據(jù)處理能力。
openpyxl庫(kù)主要用于處理.xlsx格式的文件,如果需要處理.xls格式的文件,可以使用xlrd和xlwt庫(kù)。
總結(jié)
到此這篇關(guān)于如何在python中使用openpyxl庫(kù)讀寫Excel.xlsx文件的文章就介紹到這了,更多相關(guān)python openpyxl庫(kù)讀寫Excel.xlsx文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)據(jù)爬下來(lái)保存的位置
在本篇文章里小編給大家整理的是關(guān)于python數(shù)據(jù)爬下來(lái)保存的位置,需要的朋友們可以參考下。2020-02-02
Python自動(dòng)創(chuàng)建Excel并獲取內(nèi)容
這篇文章主要介紹了Python自動(dòng)創(chuàng)建Excel并獲取內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Python?pygame項(xiàng)目實(shí)戰(zhàn)監(jiān)聽退出事件
這篇文章主要介紹了Python?pygame項(xiàng)目實(shí)戰(zhàn)監(jiān)聽退出事件,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
Python while循環(huán)使用else語(yǔ)句代碼實(shí)例
這篇文章主要介紹了Python while循環(huán)使用else語(yǔ)句代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Python探索之靜態(tài)方法和類方法的區(qū)別詳解
這篇文章主要介紹了Python探索之靜態(tài)方法和類方法的區(qū)別詳解,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-10-10
使用pandas模塊實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化操作
這篇文章主要介紹了使用pandas模塊實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
利用django model save方法對(duì)未更改的字段依然進(jìn)行了保存
這篇文章主要介紹了利用django model save方法對(duì)未更改的字段依然進(jìn)行了保存,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03

