Python利用xlrd?與?xlwt?模塊操作?Excel
Python 操作 Excel
本篇博客介紹一種 Python 操作 Excel 的辦法,核心用到 xlrd與xlwt模塊。
xlrd用于讀 excel;xlwt用于寫 excel。
模塊安裝比較簡(jiǎn)單:
pip install xlrd,xlwt
正式開(kāi)始前還需要了解一下 Excle 中的三大對(duì)象:
WorkBook:工作簿對(duì)象Sheet:表對(duì)象Cell:?jiǎn)卧駥?duì)象
這里 WorlBook 表示的是整個(gè) Excel 文件, Sheet 表示的是 Excel 中的 Sheet, Cell 就是每個(gè)單元格。
常用單元格( Cell )中的數(shù)據(jù)類型
- empty(空的)
- string(text)
- number
- date
- boolean
- error
- blank(空白表格)
打開(kāi)Excel文件讀取數(shù)據(jù)
提前準(zhǔn)備一個(gè) Excel 表格,用作測(cè)試使用:

直接看代碼即可:
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
print(data)
# 輸出
# <xlrd.book.Book object at 0x00000272DE9276A0>注意最新版的 xlrd 模塊已經(jīng)不支持 xlsx 文件了,如果希望支持該文件格式,請(qǐng)使用如下版本 xlrd 。
pip uninstall xlrd # 卸載當(dāng)前版本 pip install xlrd==1.2.0 # 安裝1.2.0版本
獲取 Excel 中的Sheet:
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
table = data.sheets()[0] # 通過(guò)索引順序獲取
print(table)
table = data.sheet_by_index(1) # 通過(guò)索引順序獲取
sheet_name = '測(cè)試1'
table = data.sheet_by_name(sheet_name) # 通過(guò) Sheet 名稱獲取
print(table)以上方法返回的是 xlrd.sheet.Sheet() 對(duì)象。 如果不存在 Sheet ,或者名稱寫錯(cuò),則出現(xiàn)如下 BUG
xlrd.biffh.XLRDError: No sheet named <'測(cè)試1'>
調(diào)用工作簿對(duì)象的 sheet_names() 方法,可以返回工作簿的所有sheet頁(yè)名字。
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
sheet_names = data.sheet_names()
print(sheet_names)使用該方法優(yōu)先獲取所有的 sheet_name ,可以防止調(diào)非法名稱。
行的操作
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
table = data.sheet_by_index(0)
nrows = table.nrows # 獲取該sheet中的有效行數(shù)
print(nrows)獲取第一行內(nèi)容:
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
sheet = data.sheet_by_index(0)
nrows = sheet.nrows # 獲取該sheet中的有效行數(shù)
row_data = sheet.row_values(0) # 獲取第1行的內(nèi)容
print(row_data)獲取所有行數(shù)據(jù)
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
sheet = data.sheet_by_index(0)
nrows = sheet.nrows # 獲取該sheet中的有效行數(shù)
for i in range(nrows):
print(sheet.row_values(i)) # 獲取第幾行的數(shù)據(jù)返回由該列中所有的單元格對(duì)象組成的列表:
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
sheet = data.sheet_by_index(0)
print(sheet.row_slice(0))
# 輸出
# [text:'姓名', text:'班級(jí)', text:'年齡']其余內(nèi)容參考代碼查看即可:
# 返回由該行中所有單元格的數(shù)據(jù)類型組成的列表 sheet .row_types(行索引, start_colx=0, end_colx=None) # 返回由該行中所有單元格的數(shù)據(jù)組成的列表 sheet .row_values(行索引, start_colx=0, end_colx=None) # 返回該列的有效單元格長(zhǎng)度 sheet .row_len(行索引)
列的操作
獲取有效列數(shù):
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
sheet = data.sheet_by_index(0)
ncols = sheet.ncols #獲取列表的有效列數(shù)
print(ncols)單元格操作
獲取單元格內(nèi)容 cell(rowx, colx) :獲取sheet對(duì)象中第rowx行,第colx列的單元對(duì)象, 返回值的格式為 單元類型:單元值 。
import xlrd
data = xlrd.open_workbook('測(cè)試表格.xlsx') # filename 表示文件名以及路徑
sheet = data.sheet_by_index(0)
data = sheet.cell(2, 1)
print(data)獲取單元格的值:
data = sheet.cell_value(2, 1) print(data)
xlwt模塊(操作 .xls 文件進(jìn)行寫操作) 使用說(shuō)明在注釋直接查看即可。
import xlwt
xl = xlwt.Workbook(encoding='utf-8')
# 創(chuàng)建1個(gè)sheet對(duì)象,第2個(gè)參數(shù)是指單元格是否允許重設(shè)置,默認(rèn)為False
sheet = xl.add_sheet('測(cè)試', cell_overwrite_ok=True)
# 第1個(gè)參數(shù)代表行,第2個(gè)參數(shù)是列,第3個(gè)參數(shù)是內(nèi)容,第4個(gè)參數(shù)是格式
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '年紀(jì)')
xl.save('橡皮擦的測(cè)試.xls')設(shè)置單元格樣式的基本用法:
import xlwt
xl = xlwt.Workbook(encoding='utf-8')
# 創(chuàng)建1個(gè)sheet對(duì)象,第2個(gè)參數(shù)是指單元格是否允許重設(shè)置,默認(rèn)為False
sheet = xl.add_sheet('測(cè)試', cell_overwrite_ok=False)
# 初始化樣式
style = xlwt.XFStyle()
# 為樣式創(chuàng)建字體
font = xlwt.Font()
font.name = 'Arial Black'
style.font = font
# 第1個(gè)參數(shù)代表行,第2個(gè)參數(shù)是列,第3個(gè)參數(shù)是內(nèi)容,第4個(gè)參數(shù)是格式
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '年紀(jì)', style)
xl.save('橡皮擦的測(cè)試.xls')合并單元格:
# 合并 第1行到第2行 的 第1列到第2列 sheet.write_merge(1, 2, 1, 2, '合并單元格')
到此這篇關(guān)于Python利用xlrd 與 xlwt 模塊操作 Excel 的文章就介紹到這了,更多相關(guān)Python操作 Excel 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)Python3 goto 語(yǔ)句的使用方法詳解
今天小編就為大家分享一篇對(duì)Python3 goto 語(yǔ)句的使用方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
python通過(guò)post提交數(shù)據(jù)的方法
這篇文章主要介紹了python通過(guò)post提交數(shù)據(jù)的方法,涉及Python使用post方式傳遞數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下2015-05-05
pandas pd.read_csv()函數(shù)中parse_dates()參數(shù)的用法說(shuō)明
這篇文章主要介紹了pandas pd.read_csv()函數(shù)中parse_dates()參數(shù)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Python操作MySQL數(shù)據(jù)庫(kù)的基本方法(查詢與更新)
在工作中我們需要經(jīng)常對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,比如 Oracle、MySQL、SQL Sever等,這篇文章主要給大家介紹了關(guān)于Python操作MySQL數(shù)據(jù)庫(kù)的基本方法包括了數(shù)據(jù)查詢與數(shù)據(jù)更新(新增、刪除、修改),需要的朋友可以參考下2023-09-09
Python實(shí)現(xiàn)基于SVM的分類器的方法
這篇文章主要介紹了Python實(shí)現(xiàn)基于SVM的分類器的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python實(shí)現(xiàn)讀取Excel文件并復(fù)制指定的數(shù)據(jù)行
這篇文章主要介紹了如何基于Python語(yǔ)言,讀取Excel表格文件數(shù)據(jù),并基于其中某一列數(shù)據(jù)的值,將這一數(shù)據(jù)處于指定范圍的那一行加以復(fù)制,感興趣的可以了解一下2023-07-07
python內(nèi)置模塊datetime.timedelta計(jì)算時(shí)間間隔示例代碼
Python的datetime模塊提供了處理日期和時(shí)間的功能,包括datetime.date、datetime.time、datetime.datetime、datetime.timedelta等類,timedelta用于表示時(shí)間間隔,支持日期和時(shí)間的加減運(yùn)算,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2025-04-04

