def draw(): report = Report("A calendar-like report") # Create report object rs = report.rows cs = report.cols report.cols_width = 1600 # Create row headers (calendar) for week in weekgen(datetime.now() - timedelta(days=30), datetime.now()): wes = rs.add_section() for day in week: if day.weekday() in (5,6): style = cell_style_weekend else: style = cell_style wes.add_field(day.strftime("%b %d"), style=style) wes.add_calc('Week %s' % weeknum(week[0]), func=sum, style=row_header_style) rs.add_calc('Total', func=sum, style=total_style) # Create column headers (just one calc field that computes average) cs.add_calc('Average', func=lambda x: 1.0*sum(x)/len(x), style=total_style) # Generate random data data = [[randrange(100) for i in range(5)] for j in range(30)] book = Workbook() ws = book.add_sheet('Worksheet') report.render(ws, data) # Render report book.save(report_name) # Save report
report_name = "quadric.xls" rep = Report("Quadric report") # Create report object cs = rep.cols # Create alias for column and row sections rs = rep.rows for i in range(3): # Create row sections ccs = cs.add_section("col %d" % i) for j in range(3): ccs.add_field("%d" % j, header_style=header_style) ccs.add_calc("", func=sum, style=calc_style) cs.add_calc("grand total", func=sum, style=total_style) for i in range(3): # Create column sections rrs = rs.add_section("row %d" % i) for j in range(3): rrs.add_field("%d" % j, header_style=header_style) rrs.add_calc("", func=sum, style=calc_style) rs.add_calc("grand total", func=sum, style=total_style) rep.cols_width = 1200 data = [[randrange(10) for j in range(9)] for i in range(9)] # Generate data book = Workbook() # xlwt part: create Workbook and Worksheet ws = book.add_sheet("Worksheet") rep.render(ws, data) # Render report book.save(report_name) # Save report print "Report has been constructed:", report_name