在应用python爬取数据的过程中,往往需要存储数据,而除开应用数据库存储数据以外,excel格式应该算是比较常用的存储格式,而关于excel文档数据的读写,在python中实现的方法有很多,概因python强大的第三方库。
这里本渣渣以过往爬取数据的坑,为大家简单总结Python读写excel文档的方法,仅供参考,毕竟本渣渣菜的很!!
涉及到篇幅,这里先给出上篇,即读取excel的方法!
其实是本渣渣准备跑路了,so,so...
读取excel表格数据
这里本渣渣准备了一个简单的excel表格数据,如图示例:
网上有很多相关教程方法,但是都找不到示例的表格数据,这里本渣渣把表格数据和示例代码一起打包给各位老哥,供老哥们学习和参考使用!
源码及excel示例文件打包
关注本渣渣公众号:二爷记
后台回复: 读取表格
即可获取所有文件
方法一:openpyxl 读取Excel表格数据
#openpyxl读取Excel表格数据 # -*- coding: UTF-8 -*- #@author:微信:huguo00289 #20210330 import openpyxl #导入模块openpyxl wb = openpyxl.load_workbook('code.xlsx') #获取表格文件 #获取表格里的表文件sheet sheets = wb.sheetnames print(sheets) #获取表文件指定的sheet ws = wb[sheets[0]] print(ws) #获取某个单元格数据,比如获取A1的值 print(ws['A1'].value) # 读取指定的某一行单元格数据,比如获取A1的值 cell = ws.cell(row=1, column=1).value print(cell) # 获取最大行数 print(ws.max_row) # 获取最大列数 print(ws.max_column) # 按列读取所有数据,每一列的单元格放入一个元组中 print(ws.columns) # 直接打印,打印结果是一个可迭代对象,我们可以转换成列表来查看 # 按行读取所有数据,每一行的单元格放入一个元组中 rows = ws.rows # 我们可以通过for循环以及value来查看单元格的值 for row in list(rows): # 遍历每行数据 case = [] # 用于存放一行数据 for c in row: # 把每行的每个单元格的值取出来,存放到case里 case.append(c.value) print(case) #使用for循环获取表格所有数据 all_content=[] for i in range(1, ws.max_row+1): row_content = [] for j in range(1, ws.max_column+1): value = ws.cell(row=i, column=j).value row_content.append(value) all_content.append(row_content) print(row_content) print('*******************************************************') print(all_content) print('===========================================================')
运行效果:
方法二:xlrd 读取Excel表格数据
# xlrd读取Excel表格数据 # -*- coding: UTF-8 -*- #@author:微信:huguo00289 #20210330 import xlrd #导入模块 xlrd # 打开文件 wb = xlrd.open_workbook('code.xlsx') # 获取所有sheet sheets=wb.sheet_names() print(sheets) # [u'sheet1', u'sheet2'] #获取表sheet sh= wb.sheet_by_name(sheets[0]) #获取表sheet名 print(sh.name) #获取表sheet行数 print(sh.nrows) #获取表sheet列数 print(sh.ncols) # 获取单元格内容 print(sh.cell(1, 0).value) print(sh.row(1)[0].value) # 获取整行和整列的值(数组) rows = sh.row_values(3) # 获取第四行内容 print(rows) cols = sh.col_values(1) # 获取第二列内容 print(cols) # 获取所有行数据 for rx in range(sh.nrows): # rx 行 print(sh.row(rx)) # 获取所有行数据 for rx in range(sh.nrows): print(sh.row_values(rx))
运行效果:
方法三:pandas读取excel表格数据
# pandas读取excel表格数据 # -*- coding: UTF-8 -*- #@author:微信:huguo00289 #20210330 import pandas as pd df=pd.read_excel('code.xlsx') #默认读取excel的第一个表单sheet1 df2=pd.read_excel('code.xlsx',sheet_name='028beauty.cn') #通过指定表单方式获取 #默认读取前5行数据 data=df.head() print(data) #获取表格相关信息,行数,列数 height,width = df.shape print(height,width,type(df)) #读取某一列数据信息 fss=df['网址'] print(fss) #读取某一列某个数据 print(fss[5]) #读取某一列数据 fs=fss.values print(fs) fs=list(fs) #转换为列表 print(fs)
运行效果: