当前位置: 首页 > news >正文

DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。

在本文中,我们将讨论如何在.NET MAUI项目中合并DevExpress Reports和Blazor Report Viewer(报表查看器)。

在开始之前,提醒一下因为新的DevExpress.Drawing图形渲染引擎,我们的.NET Reporting工具不再依赖GDI+,这种与GDI+的分离允许您在新的平台上部署由DevExpress Reports驱动的应用程序,包括 .NET MAUI,在这个新的/新兴的平台上有以下功能:

  • 在运行时创建报表文档
  • 将报表导出为可用格式
  • 在单独的类库项目的Visual Studio报表设计器中创建报表
  • 使用DevExpress Blazor报表查看器在.NET MAUI Blazor应用程序中显示报表的打印预览

接下来,让我们深入研究并将DevExpress Reports集成到.NET MAUI项目中。

获取DevExpress Reporting v23.1正式版下载(Q技术交流:909157416)

使用Visual Studio报表设计器

DevExpress Visual Studio Report Designer(报表设计器)分析项目引用和依赖关系,并根据收集的数据启动单独的后台进程。在测试期间,.NET MAUI与其他应用程序类型相比存在项目结构差异。由于这个问题,Visual Studio的DevExpress报表设计器无法立即集成到.NET MAUI项目中。

要在 .NET MAUI应用程序中创建和编辑报表,建议您在单独的类库中创建和存储报表,然后在.NET MAUI项目中引用该库。添加一个新的报表:

1. 按CTRL+SHIFT+A或在Visual Studio菜单中点击Project | Add New Item。

DevExpress Reporting产品图集

2. 选择DevExpress Report项目,指定一个报表名称,然后点击Add。

DevExpress Reporting产品图集

3. 在Report Wizard(报表向导)中选择报表类型然后点击Finish,如果要从头创建报表请选择Blank。

DevExpress Reporting产品图集

完成后,Visual Studio报表设计器将出现在屏幕上:

DevExpress Reporting产品图集

添加Blazor Report Viewer

如果您的应用需要在.NET MAUI中显示报表预览(在打印输出或导出操作之前),可以使用DevExpress Blazor报表查看器。为了整合Blazor报表查看器,首先需要创建一个.NET MAUI Blazor混合应用程序,引用所需的包,并将WebAssembly (Native)组件的报表查看器添加到Razor页面。

DevExpress Reporting产品图集

要从.NET MAUI Blazor应用程序中导出和共享报表,您需要自定义DevExpress报表查看器的导出过程。要定制导出过程,实现IExportProcessor接口(授予您访问包含文档数据的字节数组的权限)。完成后使用.NET MAUI的内置IShare接口,该接口包含一个API,用于向设备共享功能发送数据(如文本或web链接)。

下面的代码片段共享一个文件:

public class SharedReportExportProcessor : IExportProcessor {
public async Task ProcessExportResult(ExportResultItem exportResultItem, bool isPrintOperation) {
var fileName = Path.Combine(FileSystem.CacheDirectory, exportResultItem.FileName);
using (var file = File.Create(fileName)) {
file.Write(exportResultItem.Bytes);
}await Share.Default.RequestAsync(new ShareFileRequest
{
Title = "Share a Report",
File = new ShareFile(fileName)
});
}
}

如果以这种方式实现,当您选择所需的导出格式时,共享窗口将打开并提示用户选择要共享的应用程序。

注册字体

请注意,安装在开发机器上的字体集与移动设备上的字体集不同。如果在系统中找不到报表中使用的字体,则文本装饰可能会恢复到默认的Open Sans字体。

要在部署的应用程序中维护报表的外观,首先需要调用MauiProgram类中的ConfigureFonts方法。

下一步是使用DXFontRepository类注册报告中使用的字体,DevExpress.Drawing程序集使用此字体字典在文档呈现期间解析字体,在ConfigureFonts方法调用之后使用以下代码片段:

using (StreamReader rd = new StreamReader(Assets.Open("Arial.ttf"))) {
using (var ms = new MemoryStream()) {
rd.BaseStream.CopyTo(ms);
DXFontRepository.Instance.AddFont(ms);
}
}

相关文章:

DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 在本文中,我们将讨论如何在.NET MA…...

1967作为子字符串出现在单词中的字符串数目

java解法,程度:简单 说明 给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。 子字符串 是字符串中的一个连续字符序列。 示例 1: 输入:patter…...

CocosCreator 面试题(二)JavaScript中的prototype的理解

1、原型(prototype)的作用 在JavaScript中,每个函数都有一个特殊的属性叫做"prototype",它是一个对象。 原型(prototype)在JavaScript中用于实现对象之间的继承和共享属性。当创建一个函数时&am…...

python:从Excel或者CSV中读取因变量与多个自变量,用于训练机器学习回归模型,并输出预测结果

作者:CSDN @ _养乐多_ 本文详细记录了从Excel读取用于训练机器学习模型的数据,包括独立变量和因变量数据,以供用于机器学习模型的训练。这些机器学习模型包括但不限于随机森林回归模型(RF)和支持向量机回归模型(SVM)。随后,我们将测试数据集应用于这些模型,进行预测和…...

pycharm连接gitlab

1、下载安装gitlab 下载地址:Git - Downloading Package 下载后傻瓜式安装,注意勾选配置环境变量 未配置自己配置,电脑-属性-高级系统配置-环境变量 系统变量path:添加git安装目录下bin目录 2、检验安装完成 桌面右键git-open…...

【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!

文章目录 排序的稳定性插入排序插入排序的优化 希尔排序快速排序 排序的稳定性 稳定排序:排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同。(比如:冒泡、插入、基数、归并) 非稳定排序:排…...

PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五)

PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五) 一、算法介绍二、具体实现1.代码2.效果一、算法介绍 继续SIFT关键点的提取介绍,之前已经基于高程和颜色分别提取了关键点,这里是基于强度信息,若遇到文件无法读取强度问题,请参考上一篇博文,下面是具体的实现…...

uniapp打包配置

安卓: 首先不管是什么打包都需要证书,安卓的证书一般都是公司提供或者自己去申请。然后把包名等下图框住的信息填上,点击打包即可。 ios:ios需要使用mac到苹果开发者平台去申请证书,流程可以参考下边的链接 参考链接…...

人大金仓分析型数据库最大量限制

数据库支持的最大量限制: 维度 限制 数据库大小 无限 表大小 无限 行大小 1.6 TB 域大小 1 GB 每个表的行数 281474976710656 (2^48) 每个表 / 视图的列数 1600 每个表的索引数 无限 每个索引的列数 32 每个表的表级约束 无限 表名长度 63 字节 列出的“无限”…...

centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口

当使用jps -lv查看java虚拟机进程 app.jar启动后,居然出现两个启动进程,而且他们的端口都一样,同一端口,是不允许启动两个相同app的。 使用进程ps查看进程工具 #ps -aux 参数说明: a: 显示跟当前终端关联的所有进…...

【算法|双指针系列No.7】leetcodeLCR 007. 三数之和

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...

ubuntu修改IP地址

参考:ubuntu修改配置IP地址和DNS的方法总结(4种)_ubuntu设置ip地址-CSDN博客 面对ubuntu18以上的版本,主要有两种界面:图形化界面和纯命令行界面。 图形化界面配置比较简单,命令行配置稍许复杂&#xff0c…...

java springboot 通过ConfigurationProperties给第三方bean注入属性

之前我们的文章 java boot将一组yml配置信息装配在一个对象中 讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类 但 这建立在 bean是自己定义的 如果 这是个第三方的类呢? 就比如 我们在 application 中写了一套数据源的加载规则 但需要用第…...

windows系统安装openssl并且转换证书格式

概述 碎碎念,如果你有MAC电脑,就别折腾了,直接用MAC电脑吧,不用安装直接用openssl 本文主要讲到了openssl的基本使用方法,开发环境为windows,开发工具为VS2019.本文主要是说明openssl如何使用,不介绍任何理…...

【GO】基础速成

简单介绍一下go好处 编译语言,可以提前报错同时又有python的一些优点,自带多线程 开始学习 学习网站:学习网站 值 包含:字符串、整型、浮点型、布尔型等等 字符串可以 进行拼接。 需要注意的是布尔型在go里面不自动转化为in…...

五子棋(C语言实现)

目录 构思 1、主程序 2、初始化 3、游戏菜单 4、打印棋盘 6、玩家下棋 7、判断输赢 8、功能整合 人机下棋 完整版: game.h game.c text.c 测试功能代码 构思 五子棋不必多介绍了,大家小时候都玩过哈。 我们要通过程序实现这个小游戏&…...

thymeleaf,bootstrap-fileinput 多文件上传

组件遍历上传 一、前端 <!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org" > <head><th:block th:include"include :: header(修改固定资产信息)" /><th:block th:include"include :: date…...

爬虫 | 基础模块了解

文章目录 &#x1f4da;http协议&#x1f4da;requests模块&#x1f4da;re模块&#x1f407; re.I 或 re.IGNORECASE&#x1f407;re.M或 re.MULTILINE&#x1f407;re.S 或 re.DOTALL&#x1f407; re.A 或 re.ASCII&#x1f407; re.X 或 re.VERBOSE&#x1f407;特殊字符类…...

CSS复习笔记

CSS 文章目录 CSS1.概念2.CSS 引入方式3.选择器基础选择器:标签选择器类选择器id 选择器通配符选择器 复合选择器:**后代选择器****子代选择器****并集选择器****交集选择器-了解****伪类选择器** 结构伪类选择器&#xff1a;**:nth-child&#xff08;公式&#xff09;**伪元素…...

编译linux的设备树

使用make dtbs命令时 在arch/arm 的目录Makefile文件中有 boot : arch/arm/boot prepare 和scripts是空的 在文件scripts/Kbuild.include中 变量build : -f $(srctree)/scripts/Makefile.build obj build变量虽然没有在arch/arm 的目录Makefile文件中定义&#xff0c;但…...

如何用Unity打造一款MMORPG:从零开始的全流程实战教程

如何用Unity打造一款MMORPG&#xff1a;从零开始的全流程实战教程 当《魔兽世界》《最终幻想14》等经典MMORPG持续创造商业奇迹时&#xff0c;许多开发者都怀揣着打造下一个爆款的梦想。Unity引擎凭借其跨平台能力和完善的工具链&#xff0c;已成为独立团队和中小厂商开发大型多…...

思源宋体TTF:开源中文字体的技术突破与商业价值重构

思源宋体TTF&#xff1a;开源中文字体的技术突破与商业价值重构 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字化内容爆炸的今天&#xff0c;中文字体的选择直接影响信息传递的…...

保姆级教程:在QT中配置qcustomplot实现热力图(含常见问题解决方案)

QT中qcustomplot热力图实战&#xff1a;从配置到交互优化的完整指南 第一次在QT项目中尝试用qcustomplot绘制热力图时&#xff0c;我被数据映射和实时刷新的问题困扰了整整两天。直到凌晨三点调试通过的那一刻&#xff0c;才真正理解这个强大可视化工具的精妙之处。本文将分享那…...

零基础入门:5分钟学会用Ollama运行Granite-4.0-H-350M文本生成

零基础入门&#xff1a;5分钟学会用Ollama运行Granite-4.0-H-350M文本生成 1. 为什么选择Granite-4.0-H-350M Granite-4.0-H-350M是一个轻量级但功能强大的文本生成模型&#xff0c;特别适合初学者和资源有限的用户。它只有3.5亿参数&#xff0c;却能在普通电脑上流畅运行&am…...

ECG-Emotion Recognition(情绪识别)实战指南:WESAD与DREAMER数据集深度解析与应用

1. 情绪识别与ECG技术入门指南 第一次接触ECG情绪识别时&#xff0c;我和大多数人一样充满疑惑&#xff1a;心跳数据真能反映人的情绪&#xff1f;经过三个月的项目实践&#xff0c;我可以肯定地说&#xff0c;ECG信号就像情绪的"心电图"&#xff0c;愤怒时心跳加速、…...

ArcGIS模型构建器实战:一键加载上百个SHP文件(含子文件夹),告别手动拖拽

ArcGIS模型构建器实战&#xff1a;一键加载上百个SHP文件&#xff08;含子文件夹&#xff09;&#xff0c;告别手动拖拽 当你的硬盘里散落着数百个SHP文件&#xff0c;它们像秋天的落叶一样分布在几十层子文件夹中时&#xff0c;传统的手动拖拽加载方式简直是一场噩梦。上周我接…...

Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战

Android Perfetto 系列 6&#xff1a;为什么是 120Hz&#xff1f;高刷新率的优势与挑战本文是 Android Perfetto 系列的第六篇&#xff0c;主要介绍 Android 设备上 120Hz 刷新率的相关知识。如今&#xff0c;120Hz 已成为 Android 旗舰手机的标配&#xff0c;本文将讨论高刷新…...

告别代码噩梦:用Awesome-Dify-Workflow零代码30分钟实现企业级登录系统

告别代码噩梦&#xff1a;用Awesome-Dify-Workflow零代码30分钟实现企业级登录系统 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/…...

易语言实现阶乘与组合数计算

是的&#xff0c;我听说过易语言&#xff0c;它是一款面向中文使用者的编程语言&#xff0c;以其直观的中文语法和图形化界面开发能力而著称。 一、 数学概念解析 在深入编程实现前&#xff0c;我们先明确两个基础的数学概念。 1. 阶乘 阶乘 是所有小于及等于该数的正整数的…...

SEO排名专家的工作内容是什么_如何成为一名出色的SEO排名专家

<h2>SEO排名专家的工作内容是什么</h2> <p>SEO排名专家&#xff0c;全称搜索引擎优化专家&#xff0c;是一类致力于提升网站在搜索引擎中排名的专业人士。他们的工作内容涵盖了广泛的技术和策略&#xff0c;旨在让网站在搜索结果中获得更高的曝光率&#xff…...