界面控件DevExpress .NET Reports v26.1新版亮点 - AI驱动扩展功能增强

发布时间:2026/7/22 16:30:34
界面控件DevExpress .NET Reports v26.1新版亮点 - AI驱动扩展功能增强 DevExpress Reports是用于.NET生态系统的功能完整的报表平台和组件库。DevExpress Reports附带直观的Visual Studio报表设计器、ASP.NET/Blazor/WPF/WinForms的运行时报表设计器/报表查看器以及一组丰富的报表控件包括交叉选项卡/图表因此用户可以创建信息清晰的报表。在上文中介绍DevExpress Reports v26.1版本中增强的可访问性功能点击这里回顾本文将继续介绍在新版本中AI驱动扩展功能增强欢迎关注我获取后续更多更新内容哟~DevExpress新旧版本帮助文档下载可进QQ qun获取169725316AI驱动扩展WPF的报表设计器 — 使用自然语言创建表达式WPF报表设计器允许用户在DevExpress表达式编辑器和过滤器字符串编辑器中生成AI支持的标准语言表达式用户可以用纯文本描述所需的逻辑替代编写复杂的表达式。AI报告提示向导 — 优化报表生成为了优化报表生成过程产品团队为DevExpress AI Report Wizard在v25.1中引入添加了一个多代理系统。该体系结构提高了结果质量、一致性和可预测性减少了token使用并可以更好地扩展到大容量场景。Report Wizard报表向导可以从自然语言提示生成完整的报表而无需详细描述报表结构、控件、绑定或计算。现在可以将提示输入如下“创建一个干净的报表显示附加数据库中的客户及其订单。”如果输入不完整或不明确系统可能会请求有关报表结构的其他信息例如“报表标题应该是什么”“是否要在报表中介绍客户地址详细信息是/否”“请指定此报表的页面大小和方向。例如A4、纵向、信函横向或自定义尺寸”一旦用户提供适当的答案生成将自动恢复。下图显示了结果下图显示生成的报表预览AI提示词报表跨平台API新的AI API允许用户将AI支持的报表生成引擎合并到代理工作流中在桌面、Web和服务应用程序中使用它并通过IChatClient与任何AI提供商集成。PromptToReportRequest描述“prompt-to-report”操作用户提示、可选的数据源架构和可选的要更新的现有报表还可以附加主机来启用交互式生成。IAIReportGenerationHost定义允许报表生成工作流请求提示澄清和发布进度更新的方法。PromptClarificationQuestion存储AI工作流在继续生成报表之前询问的澄清问题。PromptClarificationAnswer存储即时澄清请求的结果。要在应用程序中实现报表生成请执行以下操作为用户的AI提供商创建IChatClient。创建AI扩展容器并注册报表功能。实现并提供交互式工作流的主机创建一个实现IAIReportGenerationHost的类来处理澄清问题并显示进度/通知。从提示生成报表使用用户提示创建PromptToReportRequest并分配主机然后调用AIReportingIntegration.GeneratePromptToReportAsync 来获取XtraReport。下面的示例使用Azure OpenAI将多代理报表生成集成到.NET 8控制台应用程序。.NET 8 SDKAzure OpenAIDevExpress.AIIntegration.Reporting.CommonNuGet包以下代码初始化AI客户端创建报表请求并基于用户提示生成报表C#using Azure.AI.OpenAI; using DevExpress.AIIntegration.Reporting; using DevExpress.XtraReports.UI; using Microsoft.Extensions.AI; using System.ClientModel; // Retrieve the Azure OpenAI endpoint, key, and model from user environment variables. string endpoint Environment.GetEnvironmentVariable(AZURE_OPENAI_ENDPOINT, EnvironmentVariableTarget.User) ?? throw new InvalidOperationException(AZURE_OPENAI_ENDPOINT is not set.); string apiKey Environment.GetEnvironmentVariable(AZURE_OPENAI_API_KEY, EnvironmentVariableTarget.User) ?? throw new InvalidOperationException(AZURE_OPENAI_API_KEY is not set.); string deploymentName Environment.GetEnvironmentVariable(AZURE_OPENAI_DEPLOYMENT, EnvironmentVariableTarget.User) ?? gpt-5-mini; / Create an Azure OpenAI client for the chat agent. IChatClient chatClient new AzureOpenAIClient(new Uri(endpoint), new ApiKeyCredential(apiKey)) .GetChatClient(deploymentName) .AsIChatClient(); // Create an AI extension container and enable reporting extensions. AIExtensionsContainerDefault container AIExtensionsContainerConsole.CreateDefaultAIExtensionContainer(chatClient); container.RegisterReportingExtensions(); // Ask the user for a report description in natural language. Console.WriteLine(Input a prompt for report generation:); string prompt Console.ReadLine(); try { // Enable interactive clarification questions and progress notifications. ConsoleAIReportGenerationHost host new ConsoleAIReportGenerationHost(); // Build a generation request from the user prompt. PromptToReportRequest generationRequest new PromptToReportRequest(userPrompt: prompt, dataSourceSchema: null, report: null) { ReportGenerationHost host }; // Generate a report layout and save it to a REPX file. XtraReport report await container.GeneratePromptToReportAsync(generationRequest, default); report.SaveLayoutToXml(generatedReport.repx); } catch(Exception ex) { Console.WriteLine(ex.Message); } // Keep the console window open. Console.ReadLine();主机实现接收生成进度并处理澄清问题C#using DevExpress.AIIntegration.Reporting; namespace Reporting.Generation.Console { public class ConsoleAIReportGenerationHost : IAIReportGenerationHost { private string lastStatus string.Empty; public TaskPromptClarificationAnswer ClarifyPromptAsync(PromptClarificationQuestion request) { // Render the request in your UI (request.Text and request.Choices), // then return PromptClarificationAnswer.FromValue(selectedChoice). // Return PromptClarificationAnswer.Canceled() // if the user cancels the operation. } public void NotifyAsync(string status, string reasoning) { bool isNewStatus lastStatus ! status; lastStatus status; // Surface progress to users (console, logger, status bar, web socket, and so on). // Update the status when isNewStatus is true; // otherwise refresh the reasoning only. } } }JetBrains Rider的报表设计器支持.NET项目在v25.2中官方技术团队将引入了支持.NET框架的JetBrains Rider的DevExpress报表设计器。在v26.1中他们将此集成扩展到基于.NET的项目并在Properties面板中重置以及与JetBrains Rider IDE匹配的亮/暗主题支持。