首頁 > 軟體

Python利用xlrd 與 xlwt 模組操作 Excel

2022-05-17 13:00:37

Python 操作 Excel

本篇部落格介紹一種 Python 操作 Excel 的辦法,核心用到 xlrd與xlwt模組。

  • xlrd 用於讀 excel
  • xlwt 用於寫 excel

模組安裝比較簡單:

pip install  xlrd,xlwt

正式開始前還需要了解一下 Excle 中的三大物件:

  • WorkBook:工作簿物件
  • Sheet:表物件
  • Cell:單元格物件

這裡 WorlBook 表示的是整個 Excel 檔案, Sheet 表示的是 Excel 中的 Sheet, Cell 就是每個單元格。

常用單元格( Cell )中的資料型別

  • empty(空的)
  • string(text)
  • number
  • date
  • boolean
  • error
  • blank(空白表格)

開啟Excel檔案讀取資料

提前準備一個 Excel 表格,用作測試使用:

直接看程式碼即可:

import xlrd
data = xlrd.open_workbook('測試表格.xlsx') # filename 表示檔名以及路徑
print(data)
# 輸出
# <xlrd.book.Book object at 0x00000272DE9276A0>

注意最新版的 xlrd 模組已經不支援 xlsx 檔案了,如果希望支援該檔案格式,請使用如下版本 xlrd 。

pip uninstall xlrd  # 解除安裝當前版本
pip install xlrd==1.2.0 # 安裝1.2.0版本

獲取 Excel 中的Sheet:

import xlrd
data = xlrd.open_workbook('測試表格.xlsx')  # filename 表示檔名以及路徑
table = data.sheets()[0]  # 通過索引順序獲取
print(table)
table = data.sheet_by_index(1) # 通過索引順序獲取
sheet_name = '測試1'
table = data.sheet_by_name(sheet_name) # 通過 Sheet 名稱獲取
print(table)

以上方法返回的是 xlrd.sheet.Sheet() 物件。 如果不存在 Sheet ,或者名稱寫錯,則出現如下 BUG

xlrd.biffh.XLRDError: No sheet named <'測試1'>

呼叫工作簿物件的 sheet_names() 方法,可以返回工作簿的所有sheet頁名字。

import xlrd
data = xlrd.open_workbook('測試表格.xlsx')  # filename 表示檔名以及路徑
sheet_names = data.sheet_names()
print(sheet_names)

使用該方法優先獲取所有的 sheet_name ,可以防止調非法名稱。

行的操作

import xlrd
data = xlrd.open_workbook('測試表格.xlsx')  # filename 表示檔名以及路徑
table = data.sheet_by_index(0)
nrows = table.nrows  # 獲取該sheet中的有效行數
print(nrows)

獲取第一行內容:

import xlrd
data = xlrd.open_workbook('測試表格.xlsx')  # filename 表示檔名以及路徑
sheet = data.sheet_by_index(0)
nrows = sheet.nrows  # 獲取該sheet中的有效行數
row_data = sheet.row_values(0)  # 獲取第1行的內容
print(row_data)

獲取所有行資料

import xlrd
data = xlrd.open_workbook('測試表格.xlsx')  # filename 表示檔名以及路徑
sheet = data.sheet_by_index(0)
nrows = sheet.nrows  # 獲取該sheet中的有效行數
for i in range(nrows):
    print(sheet.row_values(i)) # 獲取第幾行的資料

返回由該列中所有的單元格物件組成的列表:

import xlrd
data = xlrd.open_workbook('測試表格.xlsx')  # filename 表示檔名以及路徑
sheet = data.sheet_by_index(0)
print(sheet.row_slice(0))
# 輸出
# [text:'姓名', text:'班級', text:'年齡']

其餘內容參考程式碼檢視即可:

# 返回由該行中所有單元格的資料型別組成的列表
sheet .row_types(行索引, start_colx=0, end_colx=None)    
# 返回由該行中所有單元格的資料組成的列表
sheet .row_values(行索引, start_colx=0, end_colx=None)   
# 返回該列的有效單元格長度
sheet .row_len(行索引) 

列的操作

獲取有效列數:

import xlrd
data = xlrd.open_workbook('測試表格.xlsx')  # filename 表示檔名以及路徑
sheet = data.sheet_by_index(0)
ncols = sheet.ncols   #獲取列表的有效列數
print(ncols)

單元格操作

獲取單元格內容 cell(rowx, colx) :獲取sheet物件中第rowx行,第colx列的單元物件, 返回值的格式為 單元型別:單元值 。

import xlrd
data = xlrd.open_workbook('測試表格.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 檔案進行操作) 使用說明在註釋直接檢視即可。

import xlwt
xl = xlwt.Workbook(encoding='utf-8')
# 建立1個sheet物件,第2個引數是指單元格是否允許重設定,預設為False
sheet = xl.add_sheet('測試', cell_overwrite_ok=True)
# 第1個引數代表行,第2個引數是列,第3個引數是內容,第4個引數是格式
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '年紀')
xl.save('橡皮擦的測試.xls')

設定單元格樣式的基本用法:

import xlwt
xl = xlwt.Workbook(encoding='utf-8')
# 建立1個sheet物件,第2個引數是指單元格是否允許重設定,預設為False
sheet = xl.add_sheet('測試', cell_overwrite_ok=False)
# 初始化樣式
style = xlwt.XFStyle()
# 為樣式建立字型
font = xlwt.Font()
font.name = 'Arial Black'
style.font = font
# 第1個引數代表行,第2個引數是列,第3個引數是內容,第4個引數是格式
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '年紀', style)
xl.save('橡皮擦的測試.xls')

合併單元格:

# 合併 第1行到第2行 的 第1列到第2列
sheet.write_merge(1, 2, 1, 2, '合併單元格')

到此這篇關於Python利用xlrd 與 xlwt 模組操作 Excel 的文章就介紹到這了,更多相關Python操作 Excel 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com