python裏面的xlrd模塊詳解

本篇內容轉自: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、常用單元格中的數據類型(type)

 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的操作

1)獲取book中一個工作表

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')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章