使用 c# + vue 制作 DevExpress 报表

news2024/11/18 11:38:55

theme: smartblue

一、下载

DevExpress 下载地址: https://docs.devexpress.com/XtraReports/400128/product-information/devexpress-reporting-installer

二、创建报表

选择你要放置的文件夹,依次选择 “Add”, “New Item...

image.png

第一次显示时可能没有详情页面,点击右下角 “Show All Template

image.png

选择 “Blank” 模板 image.png

三、添加工具栏

若工具栏没有显示,可以按下 “ctrl + alt + x” 呼出

image.png

还有一些其他工具栏可从上方 XtraReports 中选择

image.png

四、 绑定 Json 格式数据源

点击右上方小正方形添加数据源

image.png

将你自己的 json 数据粘贴到下方,它会自动解析为对象 image.png 添加完毕后拖动数据制作报表

image.png

点击下方按钮即可预览

image.png

下列代码是将查询的数据转化为 json 作为数据源制作报表,并以byte数组的形式返回前端

public byte[] GetOrderConfirmationReport(string buid, string orderInfos)
 {
     // 执行数据查询 
     OrderInfo orderInfo = GetOrderById(buid, orderInfos);
     // 转化为 json 字符串
     string queryResult = JsonConvert.SerializeObject(orderInfo);
     // 绑定数据源
     XtraReport1 report = new XtraReport1()
     {
         DataSource = CreateDataSourceFromText(queryResult),
     };
     // 指定pdf格式
     PdfExportOptions pdfOptions = report.ExportOptions.Pdf;

     // Specify the quality of exported images.
     pdfOptions.ConvertImagesToJpeg = false;
     pdfOptions.ImageQuality = PdfJpegImageQuality.Medium;

     // Specify the PDF/A-compatibility.
     pdfOptions.PdfACompatibility = PdfACompatibility.PdfA3b;

     // 指定pdf标题,这个参数影响前端的标题显示!!!
     pdfOptions.DocumentOptions.Title = "Order Confirmation Report";

     string fileName = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
     string pdfPath = $".\Downloads\{fileName}.pdf";
     // 将报表导出到指定目录下
     report.ExportToPdf(pdfPath);
     // 读取报表内容,转化为byte[]
     byte[] res = GetSignaturePDFByte(pdfPath);
     // 删除报表
     File.Delete(pdfPath);

     return res;
 }

 private JsonDataSource CreateDataSourceFromText(string json)
 {
     var jsonDataSource = new JsonDataSource();

     // Specify the object that retrieves JSON data.
     jsonDataSource.JsonSource = new CustomJsonSource(json);
     // Populate the data source with data.
     jsonDataSource.Fill();
     return jsonDataSource;
 }

 private static byte[] GetSignaturePDFByte(string srcPdfFile)
 {
     using (FileStream fsRead = new FileStream(srcPdfFile, FileMode.Open, FileAccess.Read, FileShare.Read))
     {
         int fsLen = (int)fsRead.Length;
         byte[] hebyte = new byte[fsLen];
         fsRead.Read(hebyte, 0, hebyte.Length);
         return hebyte;
     }
 }
}

导出参数可参考:https://docs.devexpress.com/XtraReports/2574/detailed-guide-to-devexpress-reporting/store-and-distribute-reports/export-reports/export-to-pdf

五、测试

Swagger 返回结果如下:

image.png

六、前端处理

下列代码的作用是,新建一页并将接收数据转化为pdf显示

const exportConfirmation = ()=>{
  getOrderConfirmationReport(store.currentBU).then(res=>{
    var newWindow = window.open("");
    newWindow.document.body.style.margin = 0
    newWindow.document.body.innerHTML = 
    '<iframe frameborder="0" style="width:100%;height:100%" src=data:application/pdf;base64,' + res + '>';
  })
}

pdf 内容如下:

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1882523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1993Springboot智能旅游系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot智能旅游系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09; 旅游线路 推荐 采用&#xff08;蚁群算法&#x…

三坐标测量机:柔性生产制造中的高精度测量解决方案

柔性生产制造是制造业的核心竞争力之一。它强调生产线的灵活性和适应性&#xff0c;以满足市场对产品多样化和个性化的需求。在当今快速变化的工业环境中&#xff0c;随着消费者对产品个性化和定制化需求的增加&#xff0c;柔性生产制造和三坐标测量机的结合&#xff0c;为智能…

服务器数据恢复—EVA存储RAID管理信息丢失的数据恢复案例

意外断电导致raid硬件损坏或者riad管理信息丢失等raid模块损坏而导致数据丢失的情况非常普遍。正常情况下&#xff0c;磁盘阵列一旦创建完成就不会再对管理模块中的信息进行更改&#xff0c;但是raid管理模块中的信息属于可修改信息&#xff0c;一次或多次的意外断电可能会导致…

猫头虎 Gemma和Gemini模型的区别是什么?

猫头虎 &#x1f42f; Gemma和Gemini模型的区别是什么&#xff1f; 摘要&#x1f4d8; 在这篇文章中&#xff0c;我们将深入探讨Gemma和Gemini这两个由Google开发的AI模型。我们会对比它们的参数规模、计算资源需求和集成难度&#xff0c;帮助大家了解这两者之间的主要区别。…

Spring两大核心思想 IoC和AoP

目录 ✨ 一、什么是IoC 1、定义 &#x1f38a; 2、IoC思想 &#x1f38a; 3、优势 &#x1f38a; 4、对象的管理 &#x1f38a; 存对象&#xff1a;Component 取对象&#xff1a;AutoWired ✨二、什么是DI 1、定义 &#x1f38a; 2、IoC和DI的关系&#x1f38a; 可…

广东行政职业学院数据智能订单班开班暨上进双创工作室签约仪式圆满结束

为响应教育领域数字化与智能化浪潮这一变革&#xff0c;给学生提供更好的教育资源和实践机会&#xff0c;6月27日&#xff0c;“泰迪广东行政职业学院数据智能订单班开班仪式暨上进双创工作室签约授牌”在广东行政职业学院举行。广东行政职业学院智慧政务学院&#xff08;电子信…

JAVA里的object类

public static String toString(Object o) // 获取对象的字符串表现形式 public static boolean equals(Object a, Object b) // 比较两个对象是否相等 public static boolean isNull(Object obj) // 判断对象是否为null pu…

数据库断言-数据库连接池

原因&#xff1a;现在的代码是单线程&#xff0c;如果遇到大并发的话就会崩溃&#xff0c;数据库查询就查不过来 措施&#xff1a;需要建立数据库连接池&#xff0c;可以设置连接池的数量 什么是大并发&#xff1a;很多客户端在idea写的程序和数据库建立连接 步骤&#xff1…

Python处理异常用操作介绍

Python中的异常处理主要用于捕获和处理程序运行过程中出现的错误。 在编写Python程序时&#xff0c;我们经常会遇到各种错误&#xff0c;如语法错误、运行时错误等。为了确保程序的稳定性和健壮性&#xff0c;我们需要对可能出现的错误进行捕获和处理。本文将介绍Python中常用的…

css美化滚动条样式

效果展示 实现 滚动条宽&#xff0c;高度 /* 整体滚动条 */ ::-webkit-scrollbar {width: 10px; }/* 滚动条轨道 */ ::-webkit-scrollbar-track {background-color: #ffffff;border-radius: 6px; }/* 滚动条滑块 */ ::-webkit-scrollbar-thumb {background-color: #888;borde…

伺服阀放大器配套稳压电源

稳压电源是为伺服阀放大器配套的电源。该稳压电源在开关电源基础上采用了多项先进技术进行设计&#xff0c;输出直流电压稳压精度高、纹波系数小、可靠性好。稳压电源也适用于其他各种伺服控制系统的配套电源。输入&#xff08;180~240VAC 50Hz&#xff09;&#xff0c;输出&am…

SAP ABAP 常用实用函数

文章目录 前言一、日期 时间 相关 a.两个日期之间相隔多少月 二、数据 操作 转化 加密 a.增加 去除 前导零 b.将 数值类型 负号 提前 c.数据加密 MD5 加密 三、获取 属性 定义 读取 数据 a.获取函数的 出参 入参 定义 …

Linux|如何查找和删除重复文件

引言 整理您的个人文件夹甚至整个操作系统可能会相当棘手&#xff0c;特别是当您习惯于使用下载管理器从网上下载各种资料时。 在很多情况下&#xff0c;您可能会发现自己不小心下载了重复的mp3、pdf和epub文件&#xff08;以及其他类型的文件&#xff09;&#xff0c;并将它们…

HTML5+CSS3+JS小实例:图片九宫格

实例:图片九宫格 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1…

智慧城市新利器:免费可视化工具助力高效管理

在智慧城市的建设中&#xff0c;实现高效的统筹管理是至关重要的。通过免费可视化工具“山海鲸可视化”&#xff0c;这一目标可以轻松达成。山海鲸可视化是一款免费可视化工具&#xff0c;具备二三维融合、易用性、安全性以及高质量画面渲染等特色&#xff0c;是制作智慧城市可…

通义听悟--一个懂你的AI助理

通义听悟--一个懂你的AI助理 通义听悟音频转文字本地音视频转文字云盘音视频转文字 实时记录通义听悟进阶体验感受功能建议产品联动 通义听悟 在体验通义听悟之前&#xff0c;我们首先得知道什么是通义听悟&#xff1f;有什么应用场景&#xff1f; 通义听悟简单来说就是你的工…

Java短剧系统

探索影视新体验 &#x1f4f1;一、引言&#xff1a;短剧时代的来临 在数字化的今天&#xff0c;我们见证了许多内容消费模式的转变。从长篇大论的电视剧到短小精悍的短视频&#xff0c;再到如今备受瞩目的短剧&#xff0c;观众对于影视内容的需求越来越多元化。而短剧系统微信…

Es结合springboot(笔记回忆)

导包 <!--导入es--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <dependency><groupId>org.springframework.boot<…

前端vue项目升级nodejs后无法运行了

问题描述&#xff1a; 运行、打包都正常的vue项目&#xff0c;在将nodejs升级到v20.14.0后&#xff0c;均报错了&#xff1a; Error: error:0308010C:digital envelope routines::unsupported opensslErrorStack: [ error:03000086:digital envelope routines::initializ…

Centos下rpm和yum执行卡住问题(已解决)

问题描述 执行rpm和yum卡住&#xff0c; 没有任何报错信息&#xff0c;且无法 ctrl c 终止&#xff0c;只能通过后台 kill -9 杀死。 问题排查&#xff1a; 查看yum日志&#xff1a;yum -vv 软件包 会发现卡在 loading keyring from rpmdb&#xff0c;即load DB存在问题。 …