这篇文章讲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文件的小伙伴可以看我另一篇文章