Создание отчетов с PostgreSQL в приложении .NET 5 под Debian 10

25.05.2022

Создание отчетов с PostgreSQL в приложении .NET 5 под Debian 10

Многие нуждаются в решении, которое будет генерировать отчеты под Linux системами, а также будет поддерживать работу с SQL подобными базами данных и не только. И у нас есть такое решение в виде FastReport.Core. Данная библиотека позволяет создавать отчеты под разными дистрибутивами Linux и имеет возможность подключаться к различным базам данных. В этой статье мы рассмотрим как это реализовать на дистрибутиве Debian 10 c использованием PostgreSQL.

Для начала устанавливаем PostgreSQL на Debian 10. Подробная установка описана по следующей ссылке. Проверим работоспособность Postgres перейдя в терминал. Переключаемся на учетную запись postgres с помощью следующей команды:

$ sudo -i -u postgres

После этого для получения доступа к оболочке postgres пишем следующее:

$ psql

Теперь у нас есть доступ к командной строке postgres, и дополнительно мы убедились в её работоспособности.

Добавляем пароль для юзера postgres вместо ‘password123’:

ALTER USER postgres WITH PASSWORD ‘password123’

Создаём тестовую таблицу:

CREATE TABLE test (city varchar(80), temp_lo int, temp_hi int);

И заполняем её данными:

INSERT INTO test VALUES ('Chicago',30,40);

Готово, теперь проверим таблицу на наличие данных с помощью следующей команды. Результат отражен на рисунке ниже.

SELECT * FROM test;

Вывод команды SELECT * FROM test;

Для создания приложения на .NET 5.0 нам понадобиться установить сам DotNet. Переходим на страницу с подробной установкой и внимательно изучаем все необходимые моменты. Для более удобной работы можно загрузить VS code по этой ссылке. Затем скачиваем deb пакет и устанавливаем его на свой компьютер.

В самом VS code скачиваем плагины С# и Nuget Gallery. Последний нужен для удобного поиска и правильной установки nuget пакетов.

Создаем проект в VS code, для этого нажимаем CTRL + J чтобы открылась консоль внутри VS code. После вводим эту команду:

dotnet new console

Следующим шагом после создание проекта, нам нужно скачать и установить нужные библиотеки. По завершению прошлых действий открываем Nuget Gallery в тестовом проекте.

Открытие Nuget Gallery

Ищем FastReport.Core и устанавливаем его. Обязательно проверьте галочку напротив Prerelease, так как данный пакет является демонстрационной версией, иначе пакет не будет отображаться.

Поиск FastReport.Core в Nuget

Коннектор не является демонстрационной версией, так что не обязательно ставить галочку напротив Prerelease. Достаточно найти в строке поиска FastReport.Data.Postgres и установить его точно так же, как и прошлый пакет.

Поиск FastReport.Data.Postgres в Nuget

После установки всех необходимых компонентов открываем Program.cs в нашем проекте и вставляем следующий код в метод main:

using System;
using FastReport;
using FastReport.Data;
using FastReport.Utils;
using FastReport.Export.Pdf;
 
static void Main(string[] args)
{
//Создание подключения к PostgreSQL
 
RegisteredObjects.AddConnection(typeof(PostgresDataConnection));
PostgresDataConnection connection = new PostgresDataConnection();
connection.ConnectionString = "Host=localhost;Username=postgres;Password=1234;Database=postgres";
connection.CreateAllTables();
 
//Создание отчета и подключение базы и таблицы к отчету
 
Report report = new Report();
report.Dictionary.Connections.Add(connection);
connection.Enabled = true;
 
foreach(TableDataSource table in connection.Tables)
{
if(table.Name == "public_test")
{
table.Enabled = true;
}
}
 
ReportPage page = new ReportPage();
report.Pages.Add(page);
page.CreateUniqueName();
 
DataBand dataBand = new DataBand();
page.Bands.Add(dataBand);
dataBand.CreateUniqueName();
 
//Присваиваем DataBend нашу таблицу
 
dataBand.DataSource = report.GetDataSource("public_test");
dataBand.Height = Units.Centimeters * 0.5f;
 
TextObject City = new TextObject();
City.CreateUniqueName();
City.Bounds = new System.Drawing.RectangleF(0,0,100,100);
City.Parent = dataBand;
 
//Присваиваем значения текстовому объекту из поля DB
 
City.Text = "[public_test.city]";
 
TextObject temp_lo = new TextObject();
temp_lo.CreateUniqueName();
temp_lo.Bounds = new System.Drawing.RectangleF(150,0,100,100);
temp_lo.Parent = dataBand;
temp_lo.Text = "[public_test.temp_lo]";
 
TextObject temp_hi = new TextObject();
temp_hi.CreateUniqueName();
temp_hi.Bounds = new System.Drawing.RectangleF(300,0,100,100);
temp_hi.Parent = dataBand;
temp_hi.Text = "[public_test.temp_hi]";
 
report.Prepare();
 
PDFExport pDF = new PDFExport();
pDF.Export(report,"test.pdf");
 
}

Компилируем и запускаем наш проект. Он создаст вот такой PDF файл отчета:

PDF экспорт тестового отчета

Вывод будет очень простым. Подключать базу данных к собственному приложению совершенно не сложно, как раз сегодня мы создали отчет с использованием данных из базы PostgreSQL в дистрибутиве Debian 10.

12 августа 2024

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
8 августа 2024

Как установить FastReport .NET и его компоненты в Windows

Пошаговая инструкция по онлайн и ручной установке через регистрационный код FastReport .NET и его компонентов в Windows.
2 апреля 2024

Как работать с FastReport Avalonia на .NET 8 в VSCodium для "Альт Рабочая станция" 10

В этой статье мы разобрали как запустить FastReport Avalonia на системе "Альт Рабочая станция" 10 с использованием IDE VSCodium.