如何以正确的列对齐方式将字典转储到 .xlsx 文件中?
How to dump a dictionary into an .xlsx file with proper column alignment?
我有一本包含 2000 个条目的字典,如下所示:
d = {'10071353': (0, 0), '06030011': (6, 0), '06030016': (2, 10), ...}
鉴于我想将其写入 .xlsx
文件,我使用此代码(取自 here):
import xlsxwriter
workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
order=sorted(d.keys())
for key in order:
row += 1
worksheet.write(row, col, key)
for item in d[key]:
worksheet.write(row, col + 1, item)
row += 1
workbook.close()
这将生成具有以下对齐方式的 .xlsx
文件:
A B
06030001 0
10
06030002 10
10
06030003 5
10
然而,这是我所追求的对齐方式:
A B C
06030001 0 10
06030002 10 10
06030003 5 10
我应该在脚本中更改什么才能实现此目的?
这是我认为应该有所帮助的:
import xlsxwriter
workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
order=sorted(d.keys())
for key in order:
row += 1
worksheet.write(row, col, key)
i =1
for item in d[key]:
worksheet.write(row, col + i, item)
i += 1
workbook.close()
IN:
d={'10071353':(0, 0),'06030011':(6, 0),'06030016':(2, 10)
OUT:
A B C
06030001 6 0
06030002 2 10
06030003 0 0
最好的方法是使用 pandas
完成此任务。此处提供了一些文档 (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html )
import pandas as pd
a = {'1':[1,2,3,4], '2':[5,6,7,8]}
a = pd.DataFrame(a)
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
a.to_excel(writer, sheet_name='Sheet1')
writer.save()
您可能需要安装 xlsxwriter
软件包
我想你只是放错了一个变量。
worksheet.write(row, col + 1, item)
row += 1
这是错误的,row +=1
应该换成col +=1
这是正确的方法,您可以使用相同的变量。
import xlsxwriter
workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
order=sorted(d.keys())
for key in order:
row += 1
print(key)
worksheet.write(row, col, key)
for item in d[key]:
print(item,row, col+1)
worksheet.write(row, col + 1, item)
col += 1
col = 0
workbook.close()
输出:
我有一本包含 2000 个条目的字典,如下所示:
d = {'10071353': (0, 0), '06030011': (6, 0), '06030016': (2, 10), ...}
鉴于我想将其写入 .xlsx
文件,我使用此代码(取自 here):
import xlsxwriter
workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
order=sorted(d.keys())
for key in order:
row += 1
worksheet.write(row, col, key)
for item in d[key]:
worksheet.write(row, col + 1, item)
row += 1
workbook.close()
这将生成具有以下对齐方式的 .xlsx
文件:
A B
06030001 0
10
06030002 10
10
06030003 5
10
然而,这是我所追求的对齐方式:
A B C
06030001 0 10
06030002 10 10
06030003 5 10
我应该在脚本中更改什么才能实现此目的?
这是我认为应该有所帮助的:
import xlsxwriter
workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
order=sorted(d.keys())
for key in order:
row += 1
worksheet.write(row, col, key)
i =1
for item in d[key]:
worksheet.write(row, col + i, item)
i += 1
workbook.close()
IN:
d={'10071353':(0, 0),'06030011':(6, 0),'06030016':(2, 10)
OUT:
A B C
06030001 6 0
06030002 2 10
06030003 0 0
最好的方法是使用 pandas
完成此任务。此处提供了一些文档 (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html )
import pandas as pd
a = {'1':[1,2,3,4], '2':[5,6,7,8]}
a = pd.DataFrame(a)
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
a.to_excel(writer, sheet_name='Sheet1')
writer.save()
您可能需要安装 xlsxwriter
软件包
我想你只是放错了一个变量。
worksheet.write(row, col + 1, item)
row += 1
这是错误的,row +=1
应该换成col +=1
这是正确的方法,您可以使用相同的变量。
import xlsxwriter
workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
order=sorted(d.keys())
for key in order:
row += 1
print(key)
worksheet.write(row, col, key)
for item in d[key]:
print(item,row, col+1)
worksheet.write(row, col + 1, item)
col += 1
col = 0
workbook.close()
输出: