一直想將自己接觸到的東西梳理一遍,可就是邁不出第一步,希望從這篇總結開始不要再做行動的矮人了。
最近測試過程中需要用到python讀取excel用例資料,於是去了解和學習了下xlrd庫,這裡只記錄使用過程中讀取excel資料相關操作。
一、安裝xlrd庫
pip install xlrd
二、使用xlrd讀取excel資料
1、根據excel中sheet名稱讀取資料:
12、根據excel中sheet的序號獲取: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
13、根據列名獲取相應序號,由於有時讀取excel中列資料時,需要通過列頭名稱獲取相應的列中的值,所以寫了下面這個返回列名所在**中的index。然後就可以直接通過table.cell_value(i, getcolumnindex(table,'列名'))獲取列的值。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
1下面加入需要讀取如下excel**中的資料,在讀取資料時直接根據列名去獲取相應的值。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
根據列名讀取相應的值,**如下:
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...