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>