Python對Excel進行處理
目錄
Python對Excel進行處理
xlrd、xlwt和openpyxl模塊的比較:
一、xlrd:對xls、xlsx檔案進行讀操作
二、xlwt:對xls檔案進行寫操作
三、openpyxl:
1、對xlsx檔案進行寫操作
2、openpyxl:對xlsx檔案進行讀操作
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開始計數的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266379.html
標籤:python
