1. 程式人生 > >Python 使用xlrd庫讀取excel

Python 使用xlrd庫讀取excel

xlrd庫提供對excel的讀操作,下載地址為https://pypi.python.org/pypi/xlrd,xlrd庫的安裝可以參考本文的另一篇博文http://blog.csdn.net/u011974126/article/details/51073076

1、開啟excel檔案

xlrd提供open_workbook()函式來開啟excel檔案,示例如下:

<span style="font-size:18px;">data=xlrd.open_workbook('E:\\telebook.xls')</span>
在使用xlrd的函式之前需要先先引用xlrd庫:
<span style="font-size:18px;">import xlrd</span>
如果excel中包含中文,需要設定編碼格式為utf-8,Python3.x以上的版本不需要設定,Python3.x版本預設格式為unicode,而Python2.x的預設格式為ASCII,設定編碼格式的程式碼為:
<span style="font-size:18px;"> # -*- coding: utf-8 -*- </span>

2、讀取excel表

xlrd模組提供三種方式讀取excel表,對應為三個函式:sheets()、sheet_by_index()、sheet_by_name().

sheets()函式獲取該excel的所有sheet的清單,返回所有sheet表頭的列表。實驗圖如圖一所示:

要訪問某個具體的sheet,可以直接訪問列表sheets的元素即可。

由於telebook.xls中有三張sheet,因此上圖中列表sheets有三個元素。

sheet_by_index()函式通過索引號來獲取想要得到的sheet,返回型別為Sheet的變數,實驗圖如圖二:

  

圖二

從圖一和圖二中可以看到,圖二中的sheet1的值,正是圖一中列表sheets中的第一個元素。

sheet_by_name()函式通過sheet名來獲得想要的sheet,telebook.xls中第一張sheet的名為Sheet1,下圖為使用名字Sheet1來獲取第一張sheet。實驗圖如圖三所示。

圖三

從圖三中可以看到,通過名字sheet1訪問得到的與圖二中通過索引得到的sheet的結果一致。

3、讀取excel中的元素

xlrd提供函式獲得excel的行數和列數,以及逐行、逐列獲取表格的內容,並提供直接訪問表格單元的功能。

獲取sheet的行數:

<span style="font-size:18px;">nRows=sheet1.nrows</span>

獲得sheet的列數:

<span style="font-size:18px;">nCols=sheet1.ncols</span>

獲得整行的資料內容:
<span style="font-size:18px;">rowData=sheet1.row_values(i)#獲取第i行的資料內容</span>
獲得整列的資料內容:
<span style="font-size:18px;">colData=sheet1.col_values(i)#獲取第i列的資料內容</span>
圖四為telebook.xls中第一行和第五列的訪問實驗圖:

圖四

xlrd庫還提供對excel表格單元的直接訪問。

<span style="font-size:18px;">cell15=sheet1.cell(i,j).value  #訪問單元格(i,j),第i行,第j列</span>

最後給出一個簡單的完整的訪問telebook.xls的元素並輸出的程式:

<span style="font-size:18px;"># -*- coding: utf-8 -*- 
import xlrd

data=xlrd.open_workbook('E:\\telebook.xls')
table=data.sheet_by_name('Sheet1')

nRow=table.nrows
nCol=table.ncols

print(nRow)
print(nCol)

list1=[]

for i in range(nRow):
    for j in range(nCol):
        print(i,j,str(table.row_values(i)[j]))
        </span>list1.append(str(table.row_values(i)[j]))


print('\n')
print(list1)
</span>