Python對Excel進行處理的實操指南

xlrd、xlwt和openpyxl模塊的比較:

區別:

模塊 Excel格式支持
xls xlsx
xlrd
xlwt ×
openpyxl ×

效率:

兩種包對小文件的讀寫速度差別不大,而面對較大文件,xlrd/xlwt速度明顯優於openpyxl,但因為xlwt無法生成xlsx是個硬傷,所以想要盡量提高效率又不影響結果時,可以考慮用xlrd讀取,用openpyxl寫入。

一、xlrd:對xls、xlsx文件進行讀操作

1.獲取工作簿對象:xlrd.open_workbook()

workBook = xlrd.open_workbook(filemname):打開Excel文件讀取數據

註:filemname為文件名以及路徑,如果路徑或者文件名有中文給前面加一個r表示原生字符。

import xlrd
filename=r'D:\記錄表.xls'
workBook=xlrd.open_workbook(filename)

2.獲取工作表(sheet)對象

1)獲取所有sheet頁的名字,返回一個列表

workBook.sheet_names()

2)根據sheet頁的名字獲取指定表名的表,返回的是一個對象

sheetName = workBook.sheet_by_name(‘sheet1')

3)根據sheet索引獲取對應sheet表(索引是從0開始的),返回的是一個對象

sheetName = workbook.sheet_by_index(0)

3.獲取sheet的名稱:name

sheetName.name

4.獲取行數和列數:nrows、ncols

1)獲取表格的總行數

sheetName.nrows

2)獲取表格的總列數

sheetName.ncols

5.獲取整行或整列的值(數組):row_values、col_values

rows = sheetName.row_values(0) # 獲取第一行內容,返回一個列表
cols = sheetName.col_values(0) # 獲取第一列內容,返回一個列表


6.獲取指定單元格的值:cell(a,b).value、row(1)[0].value

sheetName.cell(1,0).value # 獲取第2行第一列的單元格數據
sheetName.row(1)[0].value # 獲取第2行第一列的單元格數據

7.獲取單元格內容的數據類型:ctype

sheetName.cell(1,0).ctype

註:返回為代表數據類型的值,編碼分別代表:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error 

二、xlwt:對xls文件進行寫操作

1.新建工作簿:xlwt.Workbook()

workBook = xlwt.Workbook()

2.在工作簿中新建sheet頁:add_sheet()

table = workBook .add_sheet(‘Over',cell_overwrite_ok=True) # 如果對同一單元格重復操作會發生overwrite Exception,cell_overwrite_ok為可覆蓋
sheet = workBook .add_sheet(sheet_name) # 新增sheet表
import xlwt
wb=xlwt.Workbook(encoding='utf-8') # 創建一個工作薄
sheet=wb.add_sheet('文件閱讀記錄信息表') # 創建一個工作表

3.向表格中寫入數據:write(i,j,value)

sheet.write(i,j,value) # 向單元格(i,j)寫入數據value

4.保存工作簿:save()

workBook.save(path)

三、openpyxl:

1、對xlsx文件進行寫操作

1).新建工作簿:openpyxl.Workbook()

workBook = openpyxl.Workbook() # 新建工作簿

2).在工作簿中新建sheet頁:create_sheet()

sheet = workBook .create_sheet(sheet_name) # 新增sheet表:sheet_name

3).向表格中寫入數據:cell(i,j,value) –索引從1計數

sheet= workBook .active # 獲得當前活躍的工作頁,默認為第一個工作頁
sheet.cell(i,j,value) # 向單元格(i,j)第i行第j列寫入數據value

註意:行號和列號都從1開始計數,即(1,1)為第一行第一列

4).保存工作簿:save()

workBook .save(path)

2、openpyxl:對xlsx文件進行讀操作

1).獲取工作簿對象:openpyxl.load_workbook()

workBook = openpyxl.load_workbook(filemname) # 讀取xlsx文件

註:filemname為文件名以及路徑,如果路徑或者文件名有中文給前面加一個r表示原生字符。

2).獲取工作表(sheet)對象

workBook.get_sheet_names() # 獲取所有sheet頁的名字(所有工作表名)
sheetName = workBook.get_sheet_by_name(‘sheet1') # 根據sheet頁的名字獲取指定表名的表
sheetName = workBook.worksheets[0] # 根據sheet索引獲取對應sheet表

3).獲取sheet的名稱:title

sheetName.title # 獲取sheet的名稱

4).獲取行數和列數:max_row、max_column

sheetName.max_row # 獲取表格的總行數
sheetName.max_column # 獲取表格的總列數

5).獲取整行或整列的值(數組):rows[i]、columns[i]

rows = sheetName.rows # 獲取每一行內容,這是一個生成器,裡面是每一行數據,每一行數據由一個元組類型包裹
cols = sheetName.columns # 獲取每一列內容,同上
sheetName.rows[0] # 獲取第一行內容–索引從0計數
sheetName.columns[0] # 獲取第一列內容–索引從0計數

6).獲取指定單元格的值:cell(a,b).value–索引從1計數

sheetName[‘A1'].value # 獲取第1行第一(A)列的單元格數據
sheetName.cell(1,1).value # 獲取第1行第一列的單元格數據

註:此處的行數和列數都是從1開始計數的,而在xlrd中是由0開始計數的

總結

到此這篇關於Python對Excel進行處理的文章就介紹到這瞭,更多相關Python對Excel處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: