В этой статье мы рассмотрим интеграцию продуктов Stimulsoft в .NET MAUI проекты. Фреймворк .NET Multi-platform App UI (в дальнейшем будет использоваться сокращение .NET MAUI) предоставляет возможность разрабатывать кроссплатформенные приложения для таких операционных систем как Windows, macOS, iOS и Android. Специальных компонентов отчетности Stimulsoft для MAUI не существует, однако для встраивания системы отчетности можно воспользоваться продуктом Reports.BLAZOR, а при необходимости интегрирования систем аналитики - продуктом Dashboards.BLAZOR.
Важно!

Генератор отчетов для BLAZOR позволяет создавать отчеты любой сложности - от стандартных счетов-фактур до комплексных документов с параметрами, интерактивной сортировкой и детализацией. Однако, нативные визуальные компоненты, вьювер и дизайнер отчетов, для фреймворка .NET MAUI отсутствуют, а компоненты из продуктов Blazor работают не на всех указанных выше платформах. Это обусловлено некоторыми особенностями самого фреймворка .NET MAUI и технологией, используемой при разработке самих компонентов.
В то же время, отчет может быть сгенерирован и отображен как результат его экспорта - например, как PDF файл или HTML текст. Также доступна возможность предоставить общий доступ к результатам экспорта отчета (sharing). Для дальнейшей работы с примером должен быть установлен фреймворк .NET Multi-platform App UI development. В установщике Visual Studio указанный фреймворк располагается в категории Desktop & Mobile.

ШАГ 1

Для начала следует создать новый проект .NET MAUI Blazor Hybrid App. В качестве целевой платформы оптимально выбрать .NET 8, так как данный фреймворк помечен как LTS (Long-Term Support), то есть имеет увеличенный срок жизни и поддержки. Фреймворк .NET 9 также поддерживается нашими продуктами.

ШАГ 2

После создания демонстрационного .NET MAUI проекта мы будем интегрировать функции для работы с отчетами Stimulsoft. Во-первых, в этот демо-проект нужно установить NuGet-пакет для системы отчетности - Stimulsoft.Reports.Blazor, или, если требуется также аналитика, Stimulsoft.Dashboards.Blazor.

ШАГ 3

Команды экспорта отчета будут располагаться на отдельной странице в проекте. Её мы добавим в шаге 5, а пока модифицируем навигационное меню, добавив ссылку. Для этого в файле Components/Layout/NavMenu.razor вставим следующий блок кода::

NavMenu.razor
...
<div class="nav-item px-3">
	<NavLink class="nav-link" href="/export">
		<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span>Export Report
	</NavLink>
</div>
...

ШАГ 4

Необходимо добавить файлы отчетов в проекты. Это могут быть файлы шаблонов отчетов или дашбордов (*.mrt, *.mrz, *.mrx), а также файлы построенных отчетов (*.mdc, *.mdz, *.mdx). Например, добавим шаблон отчета SimpleList.mrt в папку Resources/raw.

ШАГ 5

Теперь следует добавить страницу с экспортами отчетов. Для этого в папке Export.razor добавим новый файл Components/Pages. В этом примере будут добавлены три кнопки::

  • кнопка Export PDF. Вызывает экспорт отчета в PDF-файл и открытие этого файла зарегистрированным в ОС средством просмотра для PDF-файлов.

  • кнопка Export HTML. Вызывает экспорт отчета в HTML-файл и отображает страницы отчета сразу в приложении.

  • кнопка Share PDF. Вызывает экспорт отчета в PDF-файл и вызывает меню "Поделиться" для используемой ОС.

NavMenu.razor
@page "/export"

@using Stimulsoft.Report;
@using Stimulsoft.Report.Blazor;
@using Stimulsoft.Report.Web;
@using Stimulsoft.Report.Export;
@using System.Text;

<button @onclick="@ExportPdf">Export PDF</button>
<button @onclick="@ExportHtml">Export HTML</button>
<button @onclick="@SharePdf">Share PDF</button>

<br /><br />
<div>@((MarkupString)HtmlContent)</div>

@code {
	private StiReport Report = new StiReport();
	private string HtmlContent = string.Empty;

	protected override async Task OnInitializedAsync()
	{
		var reportStream = await FileSystem.OpenAppPackageFileAsync("SimpleList.mrt");
		Report.Load(reportStream);
	}

	private void ShowHtmlReport()
	{
		var service = new StiHtmlExportService();
		service.RenderAsDocument = false;

		var settings = new StiHtmlExportSettings();

		using (var stream = new MemoryStream())
		{
			service.ExportHtml(Report, stream, settings);

			var buffer = stream.ToArray();
			HtmlContent = Encoding.UTF8.GetString(buffer);
		}
	}

	private async Task ExportDocument(StiExportFormat format, string fileName, bool shareFile = false)
	{
		if (Report == null) return;

		await Task.Run(() => Report.Render());

		if (format == StiExportFormat.Html)
		{
			ShowHtmlReport();
		}
		else
		{
			var filePath = Path.Combine(FileSystem.Current.CacheDirectory, fileName);
			using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
			{
				Report.ExportDocument(StiExportFormat.Pdf, fileStream);
			}

			if (shareFile)
			{
				var file = new ShareFile(filePath);
				await Share.Default.RequestAsync(new ShareFileRequest(fileName, file));
			}
			else
			{
				var file = new ReadOnlyFile(filePath);
				await Launcher.OpenAsync(new OpenFileRequest(filePath, file));
			}
		}
	}

	private Task ExportPdf() => ExportDocument(StiExportFormat.Pdf, "Simple List.pdf");
	private Task ExportHtml() => ExportDocument(StiExportFormat.Html, "Simple List.html");
	private Task SharePdf() => ExportDocument(StiExportFormat.Pdf, "Simple List.pdf", true);
}


Integrating Stimulsoft tools into .NET MAUI

ШАГ 6

Фактически, интеграция Stimulsoft закончена. Теперь в .NET MAUI проект встроена система отчетности, и осталось только его запустить. В навигационном меню демо-проекта будет добавлена новая ссылка Export Report, при нажатии на которую откроется страница с разными действиями над отчетом - экспорт в PDF и отображение отчета как HTML-текста. Также можно экспортировать отчет в PDF-файл и поделиться им. При необходимости данный код можно легко модифицировать и выполнять экспорт в другие форматы – например, в изображения или Rich Text. Также в опциях экспорта можно настроить экспортирование только определенных страниц отчета и установить другие параметры.

Таким образом, при разработке приложений .NET Multi-platform App UI можно использовать системы отчетности и аналитики данных без использования вьювера и дизайнера отчетов. Более подробно об использовании Blazor Stimulsoft можно узнать в документации. Активация продукта Reports.BLAZOR доступна по подписке Reports.WEB, а Dashboards.BLAZOR - по подписке Dashboards.WEB. Также, в онлайн-магазине можно приобрести комплексное решение для систем отчетности и аналитики под различные платформы - подписку Stimulsoft Ultimate.
Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.