1. 导入xlrd库
import xlrd
2. 打开excel表单
#excel表格文件名
filename = '/home/ubuntu/QA_test.xls'
excel = xlrd.open_workbook(filename);
3. 检查表单名字
excel .sheet_names()
4. 得到第一张表单: (两种方式获取表单方法:索引和名字)
#得到第一张表单 根据索引
sheet =excel.sheet_by_index(0)
#得到第一张表单 根据名字 #表单名词
sheet = excel.sheet_by_name(u'Barcode')
5. 获取每一行的信息
#打印每行的信息
for rownum in range(sheet.nrows):
#每一行的信息
print sheet.row_values(rownum) #列表
6. 获取第一列的信息
#打印第一列的数据
first_columu = sheet.col_values(0)
#默认从0开始读取
for num in range (len(first_columu)):
print first_columu[num].encode("utf-8")
注意:上述for循环是从excel表格的第一列的第一行开始读取的,一般第一行都是标题,如果想跳过第一行,从第二行开始读取内容,则将for改为:
for num in range (1,len(first_columu)):
print first_columu[num].encode("utf-8")
7. 通过索引获取数据
cell_A1 = sheet.cell(0,0).value
获取第一行、第一列的内容,cell()方法中的一个参数表示的是row行,第二参数表示的是col列。
三、Demo代码
#coding=UTF-8
__author__ = '极致'
import xlrd
def open_excel(fileName='file.xls'):
try:
data = xlrd.open_workbook(fileName)
return data
except Exception, e:
print str(e)
#根据索引获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的所以 ,by_index:表的索引
def excel_table_byindex(fileName='file.xls', colnameindex=0, by_index=0):
data = open_excel(fileName)
table = data.sheets()[by_index]
nrows = table.nrows #行数
ncols = table.ncols #列数
colnames = table.row_values(colnameindex) #某一行数据
listArray = []
for rownum in range(1,nrows):
row = table.row_values(rownum)
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
listArray.append(app)
return listArray
#根据名称获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的所以 ,by_name:Sheet1名称
def excel_table_byname(fileName='file.xls', colnameindex=0, by_name='Sheet1'):
data = open_excel(fileName)
table = data.sheet_by_name(by_name)
nrows = table.nrows #行数
colnames = table.row_values(colnameindex) #某一行数据
listArray =[]
for rownum in range(1,nrows):
row = table.row_values(rownum)
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
listArray.append(app)
return list
def main():
tables = excel_table_byindex()
for row in tables:
print row
tables = excel_table_byname()
for row in tables:
print row
if __name__=="__main__":
main()