pythonxlsxwriter根据d行写入单元

2024-05-13 02:20:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有python字典:

student_age = {'bala':20,'raju':21}
student_id = {'bala':289,'raju':567} 

还有十个类似的字典,以key作为学生的名字和值不同的字段。在

预期excel结果:enter image description here

而不是

^{pr2}$

我想根据学生的名字来写,比如write(“bala”->;“age”,20)

更新代码:

import xlsxwriter
workbook = xlsxwriter.Workbook('student_data.xlsx')
worksheet = workbook.add_worksheet()

student_age={'bala':20,'raju':21,'ram':22}
student_id={'bala':289,'ram':567,'raju':654}
students = student_id.keys()
print(len(student_age.keys()))
fields = [student_age, student_id] # add other dicts here...

for row, student in enumerate(students):
    worksheet.write(row, 0, student) # name column
    for col, student_data in enumerate(fields):
        col = col + 1
        worksheet.write(row, col, student_data[student])
workbook.close()

上述规范运行良好,但存在以下争议:

  1. 输出从第0行、第0列开始,但我希望在第1行显示标题,并需要从第1行输出
    1. 如果student_id keys是20,而我有一个只有15个学生的字典,如何在不出错的情况下为这些条目留空并遍历它?在

Tags: idagedata字典colkeys名字student
2条回答

您可以简单地将所有python字典添加到一个列表中,这样就可以为每个学生迭代这些字典,以填充每一行的每一列。像这样:

更新以解决运营商的意见

对于#1,只需在第一行写入标题,然后将其他行偏移一行即可

对于#2,如果id不在字典中,您可以简单地利用^{}而不是{}符号来分配默认值:

import xlsxwriter
workbook = xlsxwriter.Workbook('student_data.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': 1})

students = student_id.keys()
fields = [student_age, student_id] # add other dicts here...
headers = ['name', 'age', 'id'] # ...

# write out a header row
for i, header in enumerate(headers):
    worksheet.write(0, i, header, bold)

for row, student in enumerate(student):
    row = row + 1
    worksheet.write(row, 0, student) # name column
    for col, student_data in enumerate(fields):
        col = col + 1
        worksheet.write(row, col, student_data.get(student, ''))

查看此链接以了解python中的词典:http://learnpythonthehardway.org/book/ex39.html

如果不提供一些示例代码,很难看到您做了什么,所以请用示例代码编辑您的问题,我也将编辑我的答案。在

你是否正确地迭代抛出你的字典,并精确地输入excel文件的行、列?在

相关问题 更多 >