如何将字典转储到具有适当列alignment的.xlsx文件中?
我有一个包含2000个项目的字典,如下所示:
d = {'10071353': (0, 0), '06030011': (6, 0), '06030016': (2, 10), ...}
鉴于我想写入一个.xlsx
文件,我使用这个代码(从这里取得 ):
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
文件,具有以下alignment方式:
AB 06030001 0 10 06030002 10 10 06030003 5 10
不过,这是我之后的路线:
ABC 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: ABC 06030001 6 0 06030002 2 10 06030003 0 0
我想你只是放错了一个variables。
worksheet.write(row, col + 1, item) row += 1
这是错误的, row +=1
应该被replace为col +=1
这是正确的方法,你可以使用相同的variables。
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()
输出:
最好的方法是使用pandas
来完成这个任务。 有些文档可以在这里find( 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
软件包