How do I output a list of dictionaries to an excel sheet?
test.py
from csv import DictWriter
players = [{'dailyWinners': 3, 'dailyFreePlayed': 2, 'user': 'Player1', 'bank': 0.06},
{'dailyWinners': 3, 'dailyFreePlayed': 2, 'user': 'Player2', 'bank': 4.0},
{'dailyWinners': 1, 'dailyFree': 2, 'user': 'Player3', 'bank': 3.1},
{'dailyWinners': 3, 'dailyFree': 2, 'user': 'Player4', 'bank': 0.32}]
with open('spreadsheet.csv','w') as outfile:
writer = DictWriter(outfile, ('dailyWinners','dailyFreePlayed','dailyFree','user','bank'))
writer.writeheader()
writer.writerows(players)
Run python test.py
Then open the resulting spreadsheet.csv
file in Excel.
NOTE: I'm running Linux so I wasn't able to test this using Microsoft Excel. This works in LibreOffice Calc and gives a spreadsheet where the keys are the column names and the values are under their appropriate columns.
There is a way to write a list of dictionary to an Excel worksheet. First of all, be sure you have XlsxWriter package
.
from xlsxwriter import Workbook
players = [{'dailyWinners': 3, 'dailyFree': 2, 'user': 'Player1', 'bank': 0.06},
{'dailyWinners': 3, 'dailyFree': 2, 'user': 'Player2', 'bank': 4.0},
{'dailyWinners': 1, 'dailyFree': 2, 'user': 'Player3', 'bank': 3.1},
{'dailyWinners': 3, 'dailyFree': 2, 'user': 'Player4', 'bank': 0.32}]
ordered_list=["user", "dailyWinners", "dailyFree", "bank"] # List object calls by index, but the dict object calls items randomly
wb=Workbook("New File.xlsx")
ws=wb.add_worksheet("New Sheet") # Or leave it blank. The default name is "Sheet 1"
first_row=0
for header in ordered_list:
col=ordered_list.index(header) # We are keeping order.
ws.write(first_row,col,header) # We have written first row which is the header of worksheet also.
row=1
for player in players:
for _key,_value in player.items():
col=ordered_list.index(_key)
ws.write(row,col,_value)
row+=1 #enter the next row
wb.close()
I tried the code, and it worked successfully.
Solution using Pandas
import pandas as pd
players = [{'dailyWinners': 3, 'dailyFreePlayed': 2, 'user': 'Player1', 'bank': 0.06},
{'dailyWinners': 3, 'dailyFreePlayed': 2, 'user': 'Player2', 'bank': 4.0},
{'dailyWinners': 1, 'dailyFreePlayed': 2, 'user': 'Player3', 'bank': 3.1},
{'dailyWinners': 3, 'dailyFreePlayed': 2, 'user': 'Player4', 'bank': 0.32}]
df = pd.DataFrame.from_dict(players)
print (df)
df.to_excel('players.xlsx')