python中用openpyxl读取excel表格数据,并且转换成字典格式

如题。excel表格数据里面有班级,姓名,性别,学号的数据。如何据全部读取出来,并且每一行数据都显示为一个字典?比如这样展示:班级:一(1)班,姓名:小明,性别:男,学号... 如题。excel表格数据里面有班级,姓名,性别,学号的数据。如何据全部读取出来,并且每一行数据都显示为一个字典?比如这样展示:班级:一(1)班,姓名:小明,性别:男,学号:110 展开
 我来答
po2po0
2020-03-07
知道答主
回答量:1
采纳率:0%
帮助的人:642
展开全部
'''
如题。excel表格数据里面有班级,姓名,性别,学号的数据。如何据全部读取出来,
并且每一行数据都显示为一个字典?
比如这样展示:班级:一(1)班,姓名:小明,性别:男,学号:110
'''
'''
思路:

先将表头每格数据读取出来,放在列表中:[‘班级’,‘姓名’,‘性别’,‘学号’]

再将表头下面每行也读取出来,放在列表中:['一(1)班','小明‘,’男','110’]

关键就算要用zip函数,首先了解zip的作用

是将2个列表中的数据第一个和第一个组合成元组,第二个和第二个组合成元组,以此类推

但它是存放在内存中,要将他们变成列表用到list()函数,最后列表要变成字典用到dict{}函数
'''
import openpyxl

# 读取excel中的数据
# 第一步打开工作簿
wb = openpyxl.load_workbook('cases.xlsx')
# 第二步选取表单,注意Sheet是大写的S
sheet = wb['Sheet1']
# 按行获取数据转换成列表
# 先定义一个总的列表所有的行先放在列表中
rows_data = list(sheet.rows)
# 获取表单的表头信息(第一行),也就是列表的第一个元素
titles = []
for title in rows_data[0]:
titles.append(title.value)
# print(title.value) # 打出来看看
# 遍历出除了第一行的其他行
for a_row in rows_data[1:]:
# the_row_data用来临时存放每一行数据
a_row_data = []
# 遍历每一行的单元格
for cell in a_row:
# print(cell.value) # 取单元格的值
# 判断该单元格的值是否为字符串类型,
# 因为有些是空的,
# 是字符串就转换成python表达式,空的就不是字符串类型就直接添加
if isinstance(cell.value, str):
a_row_data.append(eval(cell.value))
else:
a_row_data.append(cell.value)
# print(data) #打印出来看看
# 将表头和该条数据内容,打包成一个字典
rows_dict = dict(list(zip(titles, a_row_data)))
# all_rows.append(rows_dict)
print(rows_dict)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式