数据存储,一文总结Python读写excel文档(上)

在应用python爬取数据的过程中,往往需要存储数据,而除开应用数据库存储数据以外,excel格式应该算是比较常用的存储格式,而关于excel文档数据的读写,在python中实现的方法有很多,概因python强大的第三方库。

这里本渣渣以过往爬取数据的坑,为大家简单总结Python读写excel文档的方法,仅供参考,毕竟本渣渣菜的很!!

涉及到篇幅,这里先给出上篇,即读取excel的方法!

其实是本渣渣准备跑路了,so,so...

读取excel表格数据

这里本渣渣准备了一个简单的excel表格数据,如图示例:

网上有很多相关教程方法,但是都找不到示例的表格数据,这里本渣渣把表格数据和示例代码一起打包给各位老哥,供老哥们学习和参考使用!


源码及excel示例文件打包 

关注本渣渣公众号:二爷记

pic_003.jpg

后台回复: 读取表格

即可获取所有文件


方法一: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('===========================================================')

运行效果:

pic_004.png


方法二: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))

运行效果:

pic_005.png


方法三: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)

运行效果:

pic_006.png