Python讀取Excel資料並根據列名取值

2022-08-26 07:06:09 字數 3692 閱讀 3420

一直想將自己接觸到的東西梳理一遍,可就是邁不出第一步,希望從這篇總結開始不要再做行動的矮人了。

最近測試過程中需要用到python讀取excel用例資料,於是去了解和學習了下xlrd庫,這裡只記錄使用過程中讀取excel資料相關操作。

一、安裝xlrd庫

pip install xlrd

二、使用xlrd讀取excel資料

1、根據excel中sheet名稱讀取資料:    

1

defreadexceldatabyname(filename, sheetname):

2 table =none

3 errormsg =none

4try

:5 data =xlrd.open_workbook(filename)

6 table =data.sheet_by_name(sheetname)

7except

exception, msg:

8 errormsg =msg

9return table, errormsg

2、根據excel中sheet的序號獲取:

1

defreadexceldatabyindex(filename, sheetindex):

2 table =none

3 errormsg = ""

4try

:5 data =xlrd.open_workbook(filename)

6 table =data.sheet_by_index(sheetindex)

7except

exception, msg:

8 errormsg =msg

9return table, errormsg

3、根據列名獲取相應序號,由於有時讀取excel中列資料時,需要通過列頭名稱獲取相應的列中的值,所以寫了下面這個返回列名所在**中的index。然後就可以直接通過table.cell_value(i, getcolumnindex(table,'列名'))獲取列的值。

1

defgetcolumnindex(table, columnname):

2 columnindex =none33

for i in

range(table.ncols):54

if(table.cell_value(0, i) ==columnname):

5 columnindex =i

6break

7return columnindex

下面加入需要讀取如下excel**中的資料,在讀取資料時直接根據列名去獲取相應的值。

根據列名讀取相應的值,**如下:

1

#!/usr/bin/python2#

coding=utf-8

3__author__ = '

paul'4

import

xlrd

5import

chardet

6import

traceback

7def

getcolumnindex(table, columnname):

8 columnindex =none9#

print table

10for i in

range(table.ncols):11#

print columnname12#

print table.cell_value(0, i)

13if(table.cell_value(0, i) ==columnname):

14 columnindex =i

15break

16return

columnindex

17def

readexceldatabyname(filename, sheetname):18#

print filename

19 table =none

20 errormsg = ""

21try

:22 data =xlrd.open_workbook(filename)

23 table =data.sheet_by_name(sheetname)

24except

exception, msg:

25 errormsg =msg

26return

table, errormsg

27def

readexceldatabyindex(filename, sheetindex):

28 table =none

29 errormsg = ""

30try

:31 data =xlrd.open_workbook(filename)

32 table =data.sheet_by_index(sheetindex)

33except

exception, msg:

34 errormsg =msg

35return

table, errormsg

36if

__name__ == '

__main__':

37#example

38 xlsfile= '

f:/test_autotesting/testcase/runlist.xlsx

'39 table = readexceldatabyname(xlsfile, '

sheet1

')[0]40#

獲取第一行的值

41 testcase_id = table.cell_value(1, getcolumnindex(table,'

testcaseid'))

'))4344

print u'

測試用例id為:%s

'%(testcase_id)

45print u'

配置資訊為:%s

得出結果如下:

4、讀取excel中的文字或數值轉換成了float的問題

有時excel中的值為20,但讀取出來的值卻變成了20.0,這與我們想要的不大一致,特別是做ui自動化測試過程中需要下拉選擇值時就完全選不出想要的選項了。目前我想到的是通過下面的語句來處理:

if isinstance(inputvalue,float): #

判斷讀取到的值是否為float

if inputvalue==int(inputvalue): #

判斷讀取到的值與轉成int後的值是否相等,如果相等則轉成int

inputvalue =int(inputvalue)

inputvalue = str(inputvalue) #

轉成str

python 讀取Excel資料

如果xlrd執行報錯,先解除安裝當前安裝的xlrd pip uninstall xlrd 再安裝低版本的xlrd pip install xlrd 1.2.0 import xlrd import sysimport osdef read excel dict excelpath,sheetname...

讀取Excel資料

方法2 相當簡單,excel就像資料庫,每個sheet就是乙個table.microsoft.jet.oledb驅動.之後是datareader迴圈,或dataset處理都非常簡單.注意 資料型別的轉換 region set connection string strconn provider mi...

讀取Excel資料

excel2007的連線字串與excel2003的不同。datatable tbsheetname connection.getoledbschematable oledbschemaguid.tables,null 用來獲得sheet的名字 using system using system.io...