The first time I was assigned a task to create a Seal Report for data visualization, I quickly discovered there were very few posts, articles, or practical tutorials explaining how to accomplish common tasks. The official .srex XML-based report definitions are available inside the Seal Report Designer, but in many cases the experience still feels like "figure it out on your own".
Seal Report is an open-source reporting framework for .NET that allows building dynamic reports from SQL data sources with minimal configuration.
The motivation behind this post is to provide a starting point for developers who are struggling to find clear guidance on how to work efficiently with Seal Report.
In this short tutorial, I will use the AdventureWorks2025 open-source backup database. Make sure the database is restored in your SQL Server instance before starting the tutorial.
All examples described below are executed using Seal Report Designer (Community Edition).
This tutorial focuses on building a simple working report from scratch using Seal Report Designer and is intended as a starting point for developers who are new to the tool.
Configuring Data Source
Below are the steps required to configure a data source that will later be used for data visualization:
- Open Seal Report Designer
- Click the New icon
- In the left panel, right-click the Sources folder
- Select Add a new SQL Data Source
After completing these steps, a dummy SQL data source will be created.
For simplicity, you can delete the default data sources and repositories created automatically by Seal Report, since they are not required for this tutorial. Keeping only the necessary elements makes the configuration easier to follow and avoids confusion later.
At this point, your workspace should look similar to the screenshot below.
To connect the data source to an existing database, navigate to: Sources → Data Source → Connections → connection.
After selecting connection, the contextual configuration panel becomes available on the right side.
For this tutorial, use the following settings:
- Database type: MS SQLServer
- Connection type: MS SQLServer (System.Data)
- Connection string:
Data Source=localhost\SQLEXPRESS;
Initial Catalog=AdventureWorks2025;
Integrated Security=True;
TrustServerCertificate=True;
Once the connection string is configured, press F7 or click Check connection to verify that the connection is working correctly.
If everything is configured properly, the result should match the confirmation shown in the screenshot below.
Loading Tables and Views from the Catalog
After the database connection is established, tables and views can be loaded from the database catalog for further use in the report model.
Open Sources → Data Source → Tables, then right-click Tables and select Add Tables from Catalog.
In the popup window, enter HumanResources in the filter field and click Select all. Enable the following mapping options:
- Auto create joins
- Auto create table columns
- Use schema name
- Keep column names
These options automatically prepare the selected tables for reporting by generating joins between them and creating the required column metadata.
The result should look similar to the screenshot below.
Configuring the Metadata Model
Inside the Models folder, there is already a metadata Model element created by default. Select it and, in the contextual panel on the right side, set the following values:
- Source → Data Source
- Connection → connection
At the bottom of the same contextual panel, you will see the list of tables imported earlier from the catalog. Expand the HumanResources.Employee table and drag the following fields into the Drop Row Element area:
- BusinessEntityID
- JobTitle
- BirthDate
- MaritalStatus
- Gender
At this stage, before previewing the result, your configuration should look similar to the screenshot below.
By clicking the Execute button, the data is loaded from the database, mapped to the metadata model, and rendered in the UI using the Razor engine.
As you can see, by default:
- all columns are sortable
- pagination is enabled
- a global table filter is available
- the maximum number of records per page can be adjusted
These features are available out of the box and do not require any additional configuration.
Skill Check
You may notice that displaying BusinessEntityID instead of a person’s full name looks awkward. As a small exercise, try adding the Person.Person table from the catalog and replacing the identifier with the FirstName, MiddleName, and LastName fields.
If everything is configured correctly, the resulting data table should look like this:
In the next post, I will show how to apply custom filters and how to build a pivot table.






Top comments (0)