0

For this same Stack Overflow question How do I output a list of dictionaries to an Excel sheet?.

For xlsx code by jossef-harush we can use this:

import xlsxwriter

# ...

def create_xlsx_file(file_path: str, headers: dict, items: list):
    with xlsxwriter.Workbook(file_path) as workbook:
        worksheet = workbook.add_worksheet()
        worksheet.write_row(row=0, col=0, data=headers.values())
        header_keys = list(headers.keys())
        for index, item in enumerate(items):
            row = map(lambda field_id: item.get(field_id, ''), header_keys)
            worksheet.write_row(row=index + 1, col=0, data=row)
headers = {
    'bank': 'Money in Bank',
    'dailyWinners': 'Daily Winners',
    'dailyFree': 'Daily Free',
    'user': 'User',
}

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}
]

create_xlsx_file("my xslx file.xlsx", headers, players)

For creating a CSV file, what are the changes I need to do in the above code?

Like create_csv_file("my csv file.csv", headers, players).

2

1 Answer 1

1
import csv

def create_csv_file(file_path, headers, items):
    with open(file_path, "wt") as f:
        dw = csv.DictWriter(f, headers.values(), extrasaction='ignore')
        dw.writeheader()
        for row in items:
            dw.writerow({headers.get(k): v for (k, v) in row.items()})

writes

Money in Bank,Daily Winners,Daily Free,User
0.06,3,,Player1
4.0,3,,Player2
3.1,1,2,Player3
0.32,3,2,Player4

Note that this will ignore any dict keys not in headers; in your case, the dailyFreePlayeds.

Sign up to request clarification or add additional context in comments.

7 Comments

for row in players: for players can I use dynamic value
Sorry, typo. That was meant to be items.
after running your code it's working fine but after every row new blank row coming inside csv file
That's not happening on my machine.
Open the file in a text editor, not Excel. Are there double blank rows there too? If not, that's an Excel issue.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.