python裡面的xlrd模組詳解
阿新 • • 發佈:2018-11-03
本篇內容轉自:https://www.cnblogs.com/insane-Mr-Li/p/9092619.html,並對原文一些模糊不清的地方進行修正,若有非議,請在文末留言,謝謝!
那我就以下幾個問題對xlrd模組進行學習一下:
1.什麼是xlrd模組? 2.為什麼使用xlrd模組? 3.怎樣使用xlrd模組?
1.什麼是xlrd模組?
♦python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。
今天就先來說一下xlrd模組:
一、安裝xlrd模組
♦ 到python官網下載http://pypi.python.org/pypi/xlrd模組安裝,前提是已經安裝了python 環境。
♦或者在cmd視窗
pip install xlrd
二、使用介紹
1. empty(空的) 2. string(text) 3. number 4. date 5. boolean 6. error 7. blank(空白表格)
2、匯入模組
import xlrd
3、開啟Excel檔案讀取資料
data = xlrd.open_workbook(filename) #若檔名或路徑包含中文並報錯,解決方法見文末
4、常用的函式
excel中最重要的方法就是book和sheet的操作
table = data.sheets()[0] #通過索引順序獲取 table = data.sheet_by_index(sheet_indx)) #通過索引順序獲取 table = data.sheet_by_name(sheet_name) #通過名稱獲取 #以上三個函式都會返回一個xlrd.sheet.Sheet()物件 names = data.sheet_names() #返回book中所有工作表的名字 data.sheet_loaded(sheet_name or indx) # 檢查某個sheet是否匯入完畢
如:
2)行(row)的操作
nrows = table.nrows #獲取該sheet表中的有效行數
table.row_len(rowx) #返回該行有效的單元格個數,或者說是該行的有效列數
table.row(rowx) #返回由該 行 中所有的單元格物件組成的列表
table.row_slice(rowx, start_colx, end_colx) #返回由該行中第start_colx+1列到第end_colx列的單元格物件組成的列表
table.row_types(rowx, start_colx, end_colx) #返回由該行中第start_colx+1列到第end_colx列的單元格的資料型別組成的列表
table.row_values(rowx, start_colx, end_colx) #返回由該行中第start_colx+1列到第end_colx列的單元格的資料值組成的列表
#以上的start_colx和end_colx皆可省略不填,若省略,預設獲取對應該行的全部資料
3)列(colnum)的操作
ncols = table.ncols #獲取列表的有效列數
table.col(colx) #返回由該列中所有的單元格物件組成的列表
table.col(colx, start_rowx, end_rowx) #返回由該列中第start_rowx+1行到第end_rowx行的單元格物件組成的列表,不建議這種用法,會產生歧義
table.col_slice(colx, start_rowx, end_rowx) #返回由該列中第start_rowx+1行到第end_rowx行的單元格物件組成的列表
table.col_types(colx, start_rowx, end_rowx) #返回由該列中第start_rowx+1行到第end_rowx行的單元格的資料型別組成的列表
table.col_values(colx, start_rowx, end_rowx) #返回由該列中第start_rowx+1行到第end_rowx行的單元格的資料值組成的列表
4)單元格(cell)的操作
table.cell(rowx,colx) #返回第rowx+1行第colx+1列的單元格物件
table.cell_type(rowx,colx) / table.cell(rowx,colx).ctype #返回第rowx+1行第colx+1列的單元格中的資料型別
table.cell_value(rowx,colx) / table.cell(rowx,colx).value #返回第rowx+1行第colx+1列的單元格中的資料值
table.cell_xf_index(rowx, colx) # 不懂用法
問題: python解決open()函式、xlrd.open_workbook()函式檔名包含中文,sheet名包含中文報錯的問題,如下:
#開啟檔案
file = open(filename,'rb')
#開啟excel檔案
workbook = xlrd.open_workbook(filename)
#獲取sheet
sheet = workbook.sheet_by_name(sheetname)
解決方案:對引數進行轉碼即可
filename = filename.decode('utf-8')