In-Table Master-Detail in HTML Document

Note
In this article, we will use GroupDocs.Assembly to generate In-Table Master-Detail report in HTML Document format.
Note
The example reads the shop data described in The Business Layer.

In-Table Master-Detail in HTML Document

Reporting Requirement

As a report developer, you are required to represent customers’ total orders prices and price of each product separately with the following key requirements:

  • The report must show each customer along with his total orders prices.
  • It must also show each individual product ordered by the customers.
  • It must show sum of the order prices.
  • It must represent all the information in tabular form.
  • The report must be generated in the HTML Document.

Adding Syntax to be evaluated by GroupDocs.Assembly Engine

<<foreach [in customers]>> <<foreach [in Order]>> <</foreach>> <</foreach>>
CustomerOrder Price
<<[CustomerName]>><<[Order.Sum(c => c.Price)]>>
<<[Product.ProductName]>> <<[Price]>>
Total:<<[Sum( m => m.Order.Sum( c => c.Price))]>>
Tip
For detailed technical information about syntax, expressions and report generation by the engine, please visit: Working with GroupDocs.Assembly Engine.

Download In-Table Master-Detail Template

Please download the sample In-Table Master-Detail document we created in this article:

Generating The Report

import json

from groupdocs.assembly import DataSourceInfo, DocumentAssembler

with open("customers.json", encoding="utf-8") as f:
    customers = json.load(f)

assembler = DocumentAssembler()
assembler.assemble_document("in-table-master-detail.html", "in-table-master-detail-report.html", DataSourceInfo(customers, "customers"))

The following sample file is used in this example: in-table-master-detail.html

The following sample file is used in this example: customers.json

<html>
<body>
<table>
<tr>
<th>
Customer
</th>
<th>
Order Price
</th>
[TRUNCATED]

Download full output

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.