C#中使用FastReport写报告

Fastreport安装及简单使用 fastreportVCL与.NET安装 阅读详情

在做一些数据类的应用时,经常需要统计,然后输出图表,需要导出或者打印。今天介绍一个适用的FastReport包。

一、FastReport的简单介绍

FastReport 是一个常用于 .NET(C# / WinForms / WPF / ASP.NET)的报表开发工具,用来生成各式各样的报表,比如PDF,数据统计报表,打印单据,图表等。其中PDF是最常见的,本文中也是输出PDF报告,报告中含有曲线图表的显示。
FastReport支持绑定数据,一键导出,包含丰富的报表组件,比如Text,Table,Picture,Chart,Line等,文章中会介绍部分组件的使用。
FastReport还支持可视化报表设计,因为博主的工程涉及到这部分,所以本文中没有对可视化报表设计的介绍。感兴趣的可以自行寻找资源,如若之后遇到,我还会再分享的。

二、NuGet 包安装

1、FastReport.DataVisualization
2、FastReport.OpenSource
3、FastReport.OpenSource.Export.PdfSimple
4、OxyPlot.Core(图表使用)
5、OxyPlot.WindowsForms(图表使用)
6、PdfiumViewer(PDF)
7、PdfiumViewer.Native.x86_64.v8-xfa(PDF)
我在开发中发现FastReport中很多属性都找不到,所以额外安装了部分包,这里仅供参考。

三、完整代码

老规矩,先贴全部代码吧,后面解析部分片段。

using FastReport;
using FastReport.Data;
using FastReport.DataVisualization.Charting;
using FastReport.Export.PdfSimple;
using FastReport.Table;
using OxyPlot;
using OxyPlot.Series;
using PdfiumViewer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DataPoint = OxyPlot.DataPoint;

namespace MyPro.report
{
    public partial class FormReport : Form
    {
        /// <summary>
        /// 报告
        /// </summary>
        private Report report; 

        /// <summary>
        /// PDF显示
        /// </summary>
        private PdfViewer pdfViewer;

        /// <summary>
        /// pdf暂存路径
        /// </summary>
        private string pdfPath;

        /// <summary>
        /// 报告页面
        /// </summary>
        private ReportPage page;

        /// <summary>
        /// 数据区
        /// </summary>
        private DataBand dataBand;

        /// <summary>
        /// 统一字体样式
        /// </summary>
        private static readonly Font Default12 = new Font("微软雅黑", 12);
        private static readonly Font Default10 = new Font("微软雅黑", 10);
        private static readonly Font Bold12 = new Font("微软雅黑", 12, FontStyle.Bold);

        public FormReport()
        {
            InitializeComponent();
            InitUI();
            InitReport();
        }

        /// <summary>
        /// 初始化UI(Panel内嵌PDF)
        /// </summary>
        private void InitUI()
        {
            page = new ReportPage();
            
            pdfViewer = new PdfViewer();
            pdfViewer.Dock = DockStyle.Fill;
            
            // rtPanelReportViewer是我自己写的Panel,用于显示pdfViewer
            rtPanelReportViewer.Controls.Clear();
            rtPanelReportViewer.Controls.Add(pdfViewer);
        }

        /// <summary>
        /// 初始化报表
        /// </summary>
        private void InitReport()
        {
            report = new Report();

            // ===== 创建页面(A4) =====
            report.Pages.Add(page);
            page.PaperWidth = 210;
            page.PaperHeight = 297;

            // ===== 标题 =====
            ReportTitleBand titleBand = new ReportTitleBand();
            titleBand.Height = 50;
            page.ReportTitle = titleBand;

            TextObject title = new TextObject();
            title.Bounds = new RectangleF(0, 0, 700, 40);
            title.Text = "测试报告";
            title.HorzAlign = HorzAlign.Center;
            title.Font = new Font("微软雅黑", 18, FontStyle.Bold);

            titleBand.Objects.Add(title);

            // ===== 个人信息 =====
            page.PageHeader = PersonalInfo();

            // ===== 数据区 =====
            dataBand = new DataBand();
            dataBand.Height = 600;
            dataBand.DataSource = report.GetDataSource("PageData");
            page.Bands.Add(dataBand);

            // ===== 曲线图 =====
            View_LineChart();

            // ===== 表格 =====
            View_Table();

            // ===== 准备报告 =====
            report.Prepare();

            // ===== 自动预览(用PDF)=====
            pdfPath = Path.Combine(Path.GetTempPath(), "report.pdf");

            PDFSimpleExport pdf = new PDFSimpleExport();
            report.Export(pdf, pdfPath);

            // ===== 显示到 Panel =====
            pdfViewer.Document = PdfDocument.Load(pdfPath);
        }

        /// <summary>
        /// 个人信息
        /// </summary>
        private PageHeaderBand PersonalInfo()
        {
            PageHeaderBand headerBand = new PageHeaderBand();
            headerBand.Height = 120;

            // 报告生成时间
            string timeStr = DateTime.Now.ToString("yyyy:MM:dd:HH:mm:ss");

            TextObject userInfo = new TextObject();
            userInfo.Bounds = new RectangleF(0, 0, 700, 30);
            userInfo.Text = "姓名:张三    年龄:25   性别:男";
            userInfo.Font = Default12;

            TextObject timeStrInfo = new TextObject();
            timeStrInfo.Bounds = new RectangleF(0, 30, 700, 30);
            timeStrInfo.Text = $"检测时间:{timeStr}";
            timeStrInfo.Font = Default12;
            
            headerBand.Objects.Add(userInfo);
            headerBand.Objects.Add(timeStrInfo);
            
            // 返回headerBand,可以让个人信息重复使用
            return headerBand;
        }

        /// <summary>
        /// 曲线图
        /// </summary>
        private void View_LineChart()
        {
            // ===== 1. 创建 PlotModel =====
            var model = new PlotModel 
            {
                Title = "曲线图",
                TitleFont = "微雅软黑",
                TitleFontSize = 12,
                TitleFontWeight = FontWeights.Bold,
            };

            var series = new LineSeries
            {
                Title = "曲线图",
                StrokeThickness = 2,
                Color = OxyColors.RoyalBlue,
            };

            // ===== 模拟数据=====
            Random rand = new Random();
            double x = 0;
            double y = 0;

            for (int i = 0; i < 100; i++)
            {
                x += rand.NextDouble() - 0.5;
                y += rand.NextDouble() - 0.5;
                series.Points.Add(new DataPoint(x, y));
            }

            model.Series.Add(series);

            // ===== 2. 导出为图片 =====
            var exporter = new OxyPlot.WindowsForms.PngExporter
            {
                Width = 300,
                Height = 300,
            };

            Image img;
            using (var ms = new MemoryStream())
            {
                exporter.Export(model, ms);
                ms.Seek(0, SeekOrigin.Begin);
                img = Image.FromStream(ms);
            }

            // ===== 3. 转为 FastReport 图片 =====
            var picture = new PictureObject();
            picture.Bounds = new RectangleF(0, 0, 300, 300); // 位置
            picture.Image = img;

            // ===== 4. 加到页面 =====
            dataBand1.Objects.Add(picture);
        }
        
        /// <summary>
        /// 表格
        /// </summary>
        private void View_Table()
        {
            DataTable table = new DataTable("TableData");
            // 列定义
            table.Columns.Add("Column1");
            table.Columns.Add("Column2");
            table.Columns.Add("Column3");
            table.Columns.Add("Column4");
            table.Columns.Add("Column5");
            table.Columns.Add("Column6");

            // 数据填充
            table.Rows.Add("数据1", "数据2", "数据3", "数据4", "数据5", "数据6");

            report.RegisterData(table, "TableData");

            TableObject tableObj = new TableObject();
            // 左边距,上边距,表格宽度,表格高度
            tableObj.Bounds = new RectangleF(0, 30, 720, 150);
            tableObj.RowCount = table.Rows.Count + 1; // +1 for header
            tableObj.ColumnCount = 6;

            // tableObj[列, 行]
            // 设置表头
            tableObj[0, 0].Text = "第一列数值";
            tableObj[1, 0].Text = "第二列数值";
            tableObj[2, 0].Text = "第三列数值";
            tableObj[3, 0].Text = "第四列数值";
            tableObj[4, 0].Text = "第五列数值";
            tableObj[5, 0].Text = "第六列数值";

            // 设置列宽
            for(int i = 0; i < 6; i++)
            {
                tableObj.Columns[i].Width = 120;
            }

            // 绑定数据
            for (int i = 0; i < table.Rows.Count; i++)
            {
                tableObj[0, i + 1].Text = table.Rows[i]["Column1"].ToString();
                tableObj[1, i + 1].Text = table.Rows[i]["Column2"].ToString();
                tableObj[2, i + 1].Text = table.Rows[i]["Column3"].ToString();
                tableObj[3, i + 1].Text = table.Rows[i]["Column4"].ToString();
                tableObj[4, i + 1].Text = table.Rows[i]["Column5"].ToString();
                tableObj[5, i + 1].Text = table.Rows[i]["Column6"].ToString();
            }

            // 修改表头样式
            for (int col = 0; col < tableObj.ColumnCount; col++)
            {
                tableObj[col, 0].Font = Bold12;
                tableObj[col, 0].Fill = new SolidFill(Color.FromArgb(246, 247, 249)); // 可选背景色
                tableObj[col, 0].HorzAlign = HorzAlign.Center;
                tableObj[col, 0].VertAlign = VertAlign.Center;
            }

            // 修改数据字体样式
            for (int row = 1; row < tableObj.RowCount; row++)
            {
                for (int col = 0; col < tableObj.ColumnCount; col++)
                {
                    tableObj[col, row].Font = Default10;
                    tableObj[col, row].HorzAlign = HorzAlign.Center;
                    tableObj[col, row].VertAlign = VertAlign.Center;
                }
            }

            // 增加边框
            tableObj.Border.Lines = BorderLines.All;
            tableObj.Border.Color = Color.Black;
            tableObj.Border.Width = 1;

            // 添加到数据带
            dataBand.Objects.Add(tableObj);
        }

        /// <summary>
        /// 打印报告
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rtButtonPrint_Click(object sender, EventArgs e)
        {
            if (File.Exists(pdfPath))
            {
                Process.Start(new ProcessStartInfo(pdfPath)
                {
                    Verb = "print",
                    UseShellExecute = true
                });
            }
        }

        /// <summary>
        /// 导出报告
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rtButtonExport_Click(object sender, EventArgs e)
        {
            if (report != null)
            {
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "PDF文件|*.pdf";

                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    report.Export(new FastReport.Export.PdfSimple.PDFSimpleExport(), sfd.FileName);
                    MessageBox.Show("导出成功!");
                }
            }
        }
    }
}

四、代码片段解析

其实我觉得自己贴完全部代码也没有什么好解析的了,哈哈哈哈~感觉自己的备注还是比较详细的,嘻嘻。
不过为了更具体(实际为了凑字数),还是挑几段解析一下。

  1. 导出和打印报告

先解决一个可能的误会。

rtButtonPrint_Click(); rtButtonExport_Click();

这两个函数是我自己写的按钮点击事件,FastReport自带有“打印”和“导出”的,会显示在页面左上角,如图:
在这里插入图片描述

  1. 图表导出为图片

之所以要把 OxyPlot 图表转成图片,是因为 FastReport 本身不能直接渲染 OxyPlot 对象。
可以把OxyPlot理解为画图工具,FastReport只管显示绘画后的成果,不管绘画的过程。

// 创建导出器
// 这里的宽高就是在页面上导出的位置大小
 var exporter = new OxyPlot.WindowsForms.PngExporter
{
   Width = 300,
   Height = 300,
};
Image img;
using (var ms = new MemoryStream())
  {
      exporter.Export(model, ms);
      ms.Seek(0, SeekOrigin.Begin);
      img = Image.FromStream(ms);
  }

// ===== 3. 转为 FastReport 图片 =====
var picture = new PictureObject();
picture.Bounds = new RectangleF(0, 0, 300, 300); // 位置
picture.Image = img;

其中 RectangleF(0, 0, 300, 300);对应RectangleF(X轴偏移量, Y轴偏移量, 图片宽, 图片高);这里的图片宽高建议和导出器保持一致。

五、多页配置

一页显示不完怎么办?那就加页!

// 声明第二页
private ReportPage page2;
// 重点是记得声明第二页的数据区!
private DataBand dataBand2;
page2 = new ReportPage();
// 设置第二页的尺寸
page2.PaperWidth = 210;
page2.PaperHeight = 297;
// 初始化第二页数据区
dataBand2 = new DataBand();
dataBand2.Height = 600;
// 将第二页添加到报告中
report.Pages.Add(page2);
// 这样就可以将个人信息复用到第二页啦
page2.PageHeader = PersonalInfo();
// 绑定数据区
page2.Bands.Add(dataBand2);
// 往第二页数据区添加内容
dataBand2.Objects.Add(tableObj);

会添加一页就会添加第二页,注意声明数据区即可!添加内容的时候不要添加错数据区就好啦!

好了,本文先写到这里,感谢看完全文!比心!

C# 使用FastReport.NET打印报表 文章目录一、设计报告单1.给报告单添加数据源Data Source1.1 代码中注册数据源1.2 报告单中选择数据源2.设置数据区域的单元格自动高度打印报告单代码示例 FastReport.NET官方下载地址:https://www.fast-report.com/en/download/fast-report-net/ 要打印的报告单格式如下: 一、设计报告单 安装完FastReport.NET后,就可以设计报告单,要设计的报告单格式如下: 1.给报告单添加数据源Data Source 1.1 代码中注 阅读详情

相关推荐

FastReport安装方法精要

无论是.exe需要解压的包,还是已经解开的包,其下都有一个文件英文字面意思就是需要“重新编译”,你就像下面这样,类似,配置就好:注意Teechar的版本,它是独立于FastReport需要单独安装的包,emb的IDE默认安装的是标准版TeeChartStd不要安装BDE(老掉牙了的数据库引擎)、IBX(过去codeGear时代及其之前的Interbase,也许你在安装RAD时没有勾选,所以也不要编译):选择切换语言到中文,Chinese:正确选择RAD的版本,及其编译器版本x32(

pulledup的博客 4788

C# WinForm中使用FastReport

一、FastReport的简介 FastReport是功能齐全的报表控件,使开发者可以快速并高效地为·NET/VCL/COM/ActiveX应用程序添加报表支持。 二、FastReport的安装(推荐网址:https://www.cnblogs.com/yoyo-524/p/6116884.html) 感觉写的安装步骤很详细了,在这就不赘述了。另外提一个小问题,就是按照步骤我们安装好的是英文,怎么转成中文呢? 大家不用再去网上找中文破解包之类的,直接在菜单里找到“File”——>“Select

u013934107的博客 1万+

C#:使用FastReport打印带图片传参模板的实现方法

大家都知道,C#打印图片可以直接调用PrintDocument控件的PrintPage事件,通过画刷对image对象直接进行绘制。但是这种方法存在局限,例如如果打印的图片需要按纸张大小进行缩放的话,那么图片显示比例和图片显示位置等都需要动态计算,如果还要添加水印或者其他的图片操作,基本上要添加很多额外的逻辑,并且效率不高,严重限制了程序的性能。如果要在图片上绘制个性化的文本或者定制其他内容,则基本...

qq_18932003的博客 1401

C# FastReport.Net使用

对于管理类的程序在从数据库获取到数据集之后,可能就需要进行报告单的打印,C#中FastReport.Net类库封装了报告单的设计与打印,下面介绍FastReport.Net使用

程序猿的专栏 7512

c# FastReport开发报表

本文介绍c#应用FastReport开发报表,因此首先附该工具下载地址: 下载解压后可以直接使用,里面还有相关实例供参考。 下面看看一个简单的例子: 1 打开visual studio 2010创建一个工程名称为WfmFastReport,编辑界面,然后添加FastReport.dll ,FastReport.Bars.dll,FastReport.Editor.dll的引用。 FastR

gyzsky的专栏 1万+

C#基于FastReport 条码打印-实现模版打印

本文仅仅简单介绍了C#如何加载FastReport模板,如何替换模板中的变量,实现动态打印。

hlyc520的博客 1212

【亲测免费】 FastReport 开源报告生成工具使用教程

FastReport 是一个用于 .NET 6/.NET Core/.NET Framework 的免费开源报告生成工具。它可以帮助你的应用程序生成类似于文档的报告。FastReport 是一个面向带区的报告生成器,支持多种带区类型,如报告标题、报告摘要、页眉、页脚等。此外,FastReport 还支持多种数据源,包括 XML、CSV、Json、MS SQL、MySql、Oracle、Postgr...

gitblog_00982的博客 3241

C# FastReport 制作报表

以上就是报表部分全部完成了,接下来就是在程序里面如何去调用。

weixin_44936712的博客 4552

C#使用FastReport开发报表

本文介绍c#应用FastReport开发报表,因此首先附该工具下载地址:http://download.youkuaiyun.com/detail/hws1058648831a/6378499 下载解压后可以直接使用,里面还有相关实例供参考。 下面看看一个简单的例子: 1 打开visual studio 2010创建一个工程名称为WfmFastReport,编辑界面,然后添加FastReport.dll&n...

文武傲群雄,彳亍定江山 4042

Cisco Packet Tracer实战:三层交换机链路聚合配置全流程(附常见错误排查)

本文详细解析了在Cisco Packet Tracer环境中配置三层交换机链路聚合的全流程,包括基础网络设置、LACP协议配置、路由协议集成及高级优化技巧。通过实战案例和常见错误排查指南,帮助网络工程师和CCNA备考学员掌握这一提升带宽利用率和实现链路冗余的核心技术。

grafana6viz的博客 231

华中科技大学 计算机组成原理 educoder Logisim平台 计算机数据表示实验

本文主要是对 计算机数据表示实验的笔记和相关Logisim平台的图,供大家学习交流使用。 需要源文件或者源代码,可以留言评论! 目录实验目的第1关:汉字国标码转区位码实验第2关:汉字机内码获取实验第3关:偶校验编码设计第4关:偶校验解码电路设计第5关:16位海明编码电路设计第6关:16位海明解码电路设计第7关:海明编码流水传输实验第8关:16位CRC并行编解码电路设计第9关:CRC编码流水传输实验实验结果: 实验目的 本实训将帮助同学们巩固对计算机中数据表示方法的理解,要求能设计汉字国标码与区位码之间的转换

weixin_48383580的博客 2万+

解决C# fastreport打印速度慢

解决C#打印速度慢的方法

qq_35968014的博客 831

Arco Design Pro PC端商家后台框架 | Axure高保真原型库

摘要:本Axure原型设计方案基于字节跳动ArcoDesignPro规范,提供企业级后台快速搭建方案。包含动态表格、表单验证等核心组件,采用中继器驱动设计,支持响应式布局。方案覆盖80%后台常用交互,可节省60%原型制作时间,配套完整设计文档和组件库,实现原型到开发的高效衔接。特别适用于电商、SaaS等后台系统开发,支持权限管理、数据分析等场景,显著提升团队协作效率。

招风的黑耳优快云 3975

C#使用fastreport报表打印

做这个是因为做项目需要,本来自己就是刚学几个月的小菜鸟所以遇到这个新的东西就比较迷茫。在这上边挣扎了很多天,刚开始的时候在网上搜索了很多资料但是很多都是没头没尾的,要不就是用的语言不是C#。现在将解决的方法记录下来,以后用的时候可以更方便,也希望可以帮助到需要的朋友。 先说一下从看网上的资料整理出来的的思路吧: (1)要创建报表,那首先得下载fastreport组件。这个网上都可以搜索到就不多说了...

S_myChild的博客 2529

在Jetson orin板卡上部署ocr模型遇到错误

摘要:安装ONNX Runtime GPU版本时遇到问题,直接pip install onnxruntime-gpu会报错。解决方案是从test.pypi.org下载对应的.whl文件(如ort_nightly-1.14.0...aarch64.whl),本地安装后还需降级NumPy版本(如pip install numpy==1.26),以解决NumPy版本兼容性问题。整个过程涉及三个关键步骤:下载正确架构的wheel文件、本地安装、调整NumPy版本。

xdxd3c的博客 1526

AMDGPU SVM VRAM Migration 实现详解

AMD正在基于DRM SVM框架重构SVM实现,该框架即将广泛应用。本文分析了AMD开发者提交的POC验证版本的技术方案。该架构分为三层:AMDGPU SVM映射层、DRM Pagemap通用框架层和AMDGPU迁移后端硬件驱动层。系统涉及三个地址空间转换:VRAM分配器空间、HPA/PFN空间和GPU PTE地址空间。关键数据结构包括设备级迁移基础设施amdgpu_pagemap、迁移临时BO包装器amdgpu_svm_bo等。该方案通过地址空间转换实现VRAM迁移功能,目前仍处于POC阶段,设计可能变更

图形/计算GPU的驱动与虚拟化技术分享园地 870

c# fastreport中图片显示总结

第一种方式:通过字节数组方式 Byte[] streamByte = SaveImage(@"C:\Users\jay\Desktop\sign.png"); report.SetParameterValue("signPath", Convert.ToBase64String(streamByte)); 在fastreport中增加图片组件,在BeforePrint事件中写方法 stri...

qq_33380252的博客 5978

基于FPGA的AGC自适应增益控制系统开发

自动增益控制(AGC)是一种在接收信号过程中自动调整放大器增益的技术,以确保输出信号的幅度保持在一个恒定的水平。基于FPGA实现AGC系统具有高性能、低延迟和高度可配置的特点,广泛应用于无线通信、音频处理和雷达等领域。FPGA上的AGC系统提供了一种高效且灵活的方法来处理变化的信号环境。在实际应用中,通过合理的设计和优化,可以显著提高信号处理系统的鲁棒性和可靠性。

走向CTO的路上... 1696

【亲测免费】 FastReport 开源报告生成工具项目推荐

FastReport 是一个免费的开源报告生成工具,专为 .NET 6/.NET Core/.NET Framework 设计。该项目的主要编程语言是 C#,它完全兼容 .NET Standard 2.0 及更高版本。FastReport 旨在帮助应用程序生成类似文档的报告,适用于 MVC、Web API 和控制台应用程序。 ## 项目核心功能 FastReport 提供了丰富的功能,包括但不...

gitblog_00989的博客 1309

AIGC时代的必备技能:提示词工程(Prompt Engineering)全面指南

本文主要介绍了AIGC时代的重要技能——提示词工程(Prompt Engineering)。文章首先定义了提示词的概念,强调其作为人类与AI沟通桥梁的重要性,并详细阐述了提示词的功能特性,包括输入、大模型处理和输出三个环节。接着,文章探讨了提示工程的重要性,如提高输出质量、节省资源和时间等。随后,文章深入分析了提示词的基本构成要素,包括指令、上下文、输入数据和输出指示符,并提出了提示词的五大基本原则:清晰性与具体性、提供充足的上下文、明确任务与目标、考虑受众和迭代思维。最后,文章介绍了提示词的七大常见技巧

weixin_43178406的博客 27万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何在.NET 8.0 上安装 FastReport 并创建简单报告(下)

的报表生成器(无论VCL平台还是.NET平台),跨平台的多语言脚本引擎FastScript,桌面OLAP FastCube,如今都被世界各地的开发者所认可,这些名字被等价于“速度”、“可靠”和“品质”,在美国,欧洲和非洲不同国家均设有办事处。是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。

励志做最业余的专业博主,控件产品可以私我~ 1560

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用FastReport打印C# Winform程序报表

需要引入以下dll 2.打印按钮代码 private void ButtonClickPrint() { if (dgv.Rows.Count == 0) { MessageBox.Show("无数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Er...

tangliuqing的专栏 2472

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c# 中使用fastreport 打印报表

代码如下: ```c# public partial class FastReport打印 : Form { public FastReport打印() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ...

lichengwei816的博客 1839

C#调用FastReport模板进行打印

其实整个流程代码比较简单,就是在二维码这块遇到点问题,直接调用模板不能打印二维码,出来的是默认的Code39码制的一维码,后来在这位仁兄的博客下找到了解决方法 https://www.cnblogs.com/healer007/p/9017909.html 记录如下: private void PrintHZPackOne(HZTagModelInfo hZTagModelInfo, H...

Tiger_shl的博客 8590
上一篇: C#中的一些小方法
下一篇: Android 四大组件解析
HQL_seven
博客等级 码龄6年 64粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQL_seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值