这篇文章讲python 通过openpyxl来读取Excel文件 不清楚怎么通过openpyxl来写入Excel文件的小伙伴可以看我另一篇文章
1.先下载openpyxl模块
pip install openpyxl
2. 读取Excel基本步骤
先看一下要读取的文件内容(这是没有标头的Excel文件)
import openpyxl # openpyxl引入模块
# 读取 excel文件
def read_to_excel(path: str, sheet: str):
# 实例化一个workbook对象
workbook = openpyxl.load_workbook(path)
# 获取excel文件内的那一个sheet
data = workbook[sheet]
# 定义个要输出的总数组
return_data = []
# data.rows 为表格内的每一行数据
# 循环获取表格内的每一行数据
for index, row in enumerate(data.rows):
# 定义一个空的数组用来存放每一行数据单元格的数据
return_row = []
for col_index, col_value in enumerate(row):
# 获取单元格数据 追加到return_row
return_row.append(col_value.value)
return_data.append(return_row)
# 把遍历出来得每一行数据数据return_row 追加到总数组 return_data中 然后输出
return return_data
if __name__ == '__main__':
# path 访问文件的路径
path = r'D:\Python\Project\demo.xlsx'
# Excel 中sheet 的名字
sheet = 'Sheet1'
# 打印read_to_excel方法
print(read_to_excel(path, sheet))
执行以上代码可看到以实际输出的效果
现在输出的只是数组,有时候我们想要的数据中需要是包含key的对象 如 [[{'name': 'John Brown1S'}, {'age': 18}, {'address': 'New York No. 1 Lake Park'}]]
而且 Excel文件文件中还包含着标头信息需要过滤
下面处理数据结构和过滤表头数据
这个有表头的Excel文件
先定义key的值(下面有完整代代码)
在 read_to_excel 中加入红框内的代码(下面有完整代代码)
输出的结果可以看到数据中已经包含了key
不过标题信息也被输出出来了 接下来处理 过滤表头数据
处理表头信息可以在循环中使用if continue
判断index为0那一行跳出本次循环忽略本次数据 就不会再添加了 如下图
下面是完整的读取Excel文件的代码 ,
import openpyxl # openpyxl引入模块
# 读取 excel文件
def read_to_excel(path: str, sheet: str, info):
# 实例化一个workbook对象
workbook = openpyxl.load_workbook(path)
# 获取excel文件内的那一个sheet
data = workbook[sheet]
# 定义个要输出的总数组
return_data = []
# data.rows 为表格内的每一行数据
# 循环获取表格内的每一行数据
for index, row in enumerate(data.rows):
# 判断index为0那一行跳出本次循环忽略本次数据 就不会再添加了
if index == 0:
continue
# 定义一个空的数组用来存放每一行数据单元格的数据
return_row = []
for col_index, col_value in enumerate(row):
# 获取单元格数据 追加到return_row
# 定义一个{}
col_obj = {}
# 通过col_index索引 使info中key的名字和col_value.value能匹配
# info[col_index]获取key
# 把 col_value.value赋值给col_obj[info[col_index]]
col_obj[info[col_index]] = col_value.value
return_row.append(col_obj)
return_data.append(return_row)
# 把遍历出来得每一行数据数据return_row 追加到总数组 return_data中 然后输出
return return_data
if __name__ == '__main__':
# path 访问文件的路径
path = r'D:\Python\Project\demo.xlsx'
# Excel 中sheet 的名字
sheet = 'Sheet1'
# 在这里定义一个包含key的数组
info = ['name', 'age', 'address']
print(read_to_excel(path, sheet, info))
写的有点多了 下一篇再写python 通过openpyxl来写入Excel文件吧
更新:
不知道怎么通过openpyxl来写入Excel文件的小伙伴可以看我另一篇文章