網站首頁 學習教育 IT科技 金融知識 旅遊規劃 生活小知識 家鄉美食 養生小知識 健身運動 美容百科 遊戲知識 綜合知識
當前位置:趣知科普吧 > IT科技 > 

xlrd讀取excel|python

欄目: IT科技 / 發佈於: / 人氣:1.15W

import xlrd  # 匯入xlrd模組

1、開啟excel檔案,獲取檔案內容

excel = '/Users/usr/Downloads/TEMP/DVT.xlsx'

data = xlrd.open_workbook(excel)

data.nsheets  # 獲取該excel檔案中包含的sheet的數量

data.sheets()  # 返回該excel檔案中所有sheet對象組成的列表

data.sheet_names()  # 返回該excel檔案中所有sheet名稱組成的列表

data.sheet_names()[index]  # 獲取excel檔案中指定索引的sheet的名稱

data.sheet_loaded(sheet_name or index)  # 檢查某個sheet是否匯入完畢

2、獲取某個sheet數據

table = data.sheets()[index]  # 根據sheet索引獲取sheet內容

table = data.sheet_by_index(index)  # 根據sheet索引獲取sheet內容

table = data.sheet_by_name(sheet_name)  # 根據sheet名稱獲取sheet內容

table.name  # 獲取sheet名稱

python xlrd讀取excel

3、操作行、列、單元格

# 行的操作

table.nrows     # 獲取該sheet中的有效行數

table.row(rowx)    # 返回由該行中所有單元格對象組成的列表

table.row_slice(rowx)  # 返回由該列中所有的單元格對象組成的列表

table.row_types(rowx,start_colx=0,end_colx=None)  # 返回由該行中所有單元格的數據類型組成的列表

table.row_values(rowx,start_colx=0, end_colx=None)  # 返回由該行中所有單元格數據組成的列表

table.row_len(rowx)  # 返回該列的有效單元格長度

# 列的操作

table.ncols     # 獲取該sheet中的有效列數

table.col(colx,start_rowx=0,end_rowx=None)

table.col_slice(colx,start_rowx=0,end_rowx=None)

table.col_types(colx,start_rowx=0,end_rows=None)

table.col_values(colx,start_rowx=0,end_rows=None)

# 單元格的操作

table.cell(rowx,colx)  # 返回單元格對象

table.cell_value(rowx,colx)  # 返回單元格中的數據

table.cell(rowx,colx).value

table.row(rowx)[index].value

table.col(colx)[index].value

table.cell_type(rowx,colx)  # 返回單元格中的數據類型

sheet2.cell(rowx,colx).ctype

table.row(rowx)[index].ctype

table.col(colx)[index].ctype

4、獲取單元格內容爲特定類型方式

# ctype: 0 empty,1 string,2 number,3 date,4 boolean,5 error,6 blank

# 獲取單元格內容爲date格式

from datetime import datetime,date

if sheet1.cell(3,6).ctype == 3:

    cell_value = sheet1.cell(3,6).value)

    date_value = xlrd.xldate_as_tuple(cell_value, data.datemode)

    date_value_str = date(*data_value[:3])

    date_value_str = date(*data_value[:3]).strftime('%Y/%m/%d')

# 獲取單元格內容爲number(int)格式   

if sheet1.cell(3,5).ctype == 2:

    cell_value = sheet1.cell(3,5).value

    num_value = int(cell_value)

python xlrd讀取excel 第2張

5、獲取合併單元格的內容

data = xlrd.open_workbook(filename, formattinng_info=True)

sheet1 = data.sheet_by_name('OTA_02')

sheet1.merged_cells

# 返回: (row,row_range,col,col_range)

# 總結規律: 獲取merge_cells返回的row和col的低位索引即可

merge_value = []

for (row,row_range,col,col_range) in sheet1.merged_cells:

    merge_value.append((row,col))

print(merge_value)

for v in merge_value:

    cell_value = sheet1.cell(v[0],v[1]).value

    print(cell_value)

6、開啟包含中文字元的檔案名和sheet名時報錯的解決辦法

# 1.使用open()函數,xlrd.open_workbook()函數開啟檔案,檔案名若包含中文,會報錯找不到這個檔案或目錄

# 2.獲取sheet時,若包含中文,也會報錯

file = open(filename,'rb') # 開啟檔案

workbook = xlrd.open_workbook(filename)  # 開啟excel檔案

sheet = workbook.sheet_by_name(sheetname)  # 獲取sheet

# 解決方案:

# a.對參數進行轉碼即可,如:

filename = filename.decode('utf-8')

# b.也試過unicode函數,不過,在ride中執行時出現了報錯,不推薦

filename = unicode(filename,'utf-8')