在python自动化中,常常会遇到对数据文件的操做,好比添加多名员工,可是直接将员工数据写在python文件中,不但工做量大,要是之后再次遇到相似批量数据操做还会写在python文件中吗?python
应对这一问题,能够将数据写excel文件,针对excel 文件进行操做,完美解决。数组
本文仅介绍python对excel的操做app
安装xlrd 库ide
xlrd库 官方地址:https://pypi.org/project/xlrd/spa
pip install xlrd3d
笔者在安装时使用了 pip3 install xlrdexcel
缘由:笔者同时安装了python2 和 python3blog
若是pip的话会默认将库安装到python2中,python3中不能直接调用。索引
那么究竟是使用pip 仍是pip3进行安装呢?ip
若是系统中只安装了Python2,那么就只能使用pip。
若是系统中只安装了Python3,那么既可使用pip也可使用pip3,两者是等价的。
若是系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用。
Xlrd 库简单的使用
以以下excel文件为例进行操做
文件名为demo,有两个sheet,名为工做表1和工做表2
工做表1中有以下数据
简单的使用
# coding=utf-8 import xlrd # 打开文件 data = xlrd.open_workbook('file/demo.xlsx') # 查看工做表 data.sheet_names() print("sheets:" + str(data.sheet_names())) # 经过文件名得到工做表,获取工做表1 table = data.sheet_by_name('工做表1') # 打印data.sheet_names()可发现,返回的值为一个列表,经过对列表索引操做得到工做表1 # table = data.sheet_by_index(0) # 获取行数和列数 # 行数:table.nrows # 列数:table.ncols print("总行数:" + str(table.nrows)) print("总列数:" + str(table.ncols)) # 获取整行的值 和整列的值,返回的结果为数组 # 整行值:table.row_values(start,end) # 整列值:table.col_values(start,end) # 参数 start 为从第几个开始打印, # end为打印到那个位置结束,默认为none print("整行值:" + str(table.row_values(0))) print("整列值:" + str(table.col_values(1))) # 获取某个单元格的值,例如获取B3单元格值 cel_B3 = table.cell(3,2).value print("第三行第二列的值:" + cel_B3)
运行后结果
项目中使用
得到全部的数据
# coding=utf-8 import xlrd def read_xlrd(excelFile): data = xlrd.open_workbook(excelFile) table = data.sheet_by_index(0) for rowNum in range(table.nrows): rowVale = table.row_values(rowNum) for colNum in range(table.ncols): if rowNum > 0 and colNum == 0: print(int(rowVale[0])) else: print(rowVale[colNum]) print("---------------") # if判断是将 id 进行格式化 # print("未格式化Id的数据:") # print(table.cell(1, 0)) # 结果:number:1001.0 if __name__ == '__main__': excelFile = 'file/demo.xlsx' read_xlrd(excelFile=excelFile)
结果
若是在项目中使用则可将内容方法稍为作修改,得到全部的数据后,将每一行数据做为数组进行返回
# coding=utf-8 import xlrd def read_xlrd(excelFile): data = xlrd.open_workbook(excelFile) table = data.sheet_by_index(0) dataFile = [] for rowNum in range(table.nrows): # if 去掉表头 if rowNum > 0: dataFile.append(table.row_values(rowNum)) return dataFile if __name__ == '__main__': excelFile = 'file/demo.xlsx' print(read_xlrd(excelFile=excelFile))
结果