I am working on exporting a page report that breaks down into 3 smaller subsets. However, the structure of each object within each list makes the xlsxwriter enumeration function assume that it is the only iterable element, and writes only one line.
Below is the structure of a single list of objects (transferred to the writer) and one object.
An almost certain structure of the object that destroys the desired result, but in case someone sees something else, do not be shy!
Thank!
List:
[<Page: badges : Badges : me>, <Page: badges : Badges : me>, <Page: badges : Badges : me>], [<Page: badges : Badges : me>, <PageTracking: badges : Badges : me>, <Page: badges : Badges : me>]
One item in the list:
<Page: badges : Badges : me>
Code for splitting the list into a group of 3 subscriptions:
all_pages = Page.objects.all()
page_groups = [all_pages[x:x+2] for x in xrange(0, len(all_pages), 2)]
XlsxWriter Code:
def WriteToExcel(page_chunk, workbook):
if page_chunk is not None:
print "WriteToExcel ----- triggered \n"
try:
workbook = workbook
worksheet_s = workbook.add_worksheet("Summary")
title = workbook.add_format({
'bold': True,
'font_size': 14,
'align': 'center',
'valign': 'vcenter'
})
header = workbook.add_format({
'bg_color': '#F7F7F7',
'color': 'black',
'align': 'center',
'valign': 'top',
'border': 1
})
title_text = ("Report For Page")
worksheet_s.merge_range('B2:H2', title_text, title)
worksheet_s.set_column(0, 6, 12)
worksheet_s.write(4, 0, ("#"), header)
worksheet_s.write(4, 1, ("ID"), header)
worksheet_s.write(4, 2, ("Page Type"), header)
worksheet_s.write(4, 3, ("Page Name"), header)
worksheet_s.write(4, 4, ("User Email"), header)
worksheet_s.write(4, 5, ("Date Visited"), header)
for idx, data in enumerate(page_chunk):
print "data ---------- %s" %(data)
row = 5 + idx
worksheet_s.write_number(row, 0, idx + 1)
worksheet_s.write(row, 1, data.pk)
worksheet_s.write(row, 2, data.page_type)
worksheet_s.write(row, 3, data.page_name)
worksheet_s.write(row, 4, data.user_email)
worksheet_s.write(row, 5, data.date_visited)
workbook.close()
except:
log.debug("Worksheet write has failed --> page_chunk handed to function %s", page_chunk)
return False
Table output:
