def dictToXlsx(data): from openpyxl import Workbook from openpyxl.writer.excel import save_virtual_workbook wb = Workbook() for sheetname in data['sheets']: sheet = data['data'][sheetname] ws = wb.create_sheet(title=sheetname) for j, field in enumerate(sheet['fields']): fieldtxt = field[1] if isinstance(field, tuple) else field ws.cell(column=j + 1, row=1, value=fieldtxt) for i, row in enumerate(sheet['data']): for j, field in enumerate(sheet['fields']): fieldv = field[0] if isinstance(field, tuple) else field f = row.get(fieldv, None) ws.cell(column=j + 1, row=2 + i, value=f) return save_virtual_workbook(wb)