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庫:
如果excel中包含中文,需要設定編碼格式為utf-8,Python3.x以上的版本不需要設定,Python3.x版本預設格式為unicode,而Python2.x的預設格式為ASCII,設定編碼格式的程式碼為:<span style="font-size:18px;">import xlrd</span>
<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>