LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# WinForm实现打印模板自定义、预览、打印功能

admin
2025年3月24日 23:31 本文热度 357

一、效果展示

二、VS2022

界面设计:

后端代码

模板设计

项目文件

三、核心代码

/// <summary>
/// 设计模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){ StiDesigner designer = new StiDesigner(report);
StiDesigner.SavingReport += StiDesigner_SavingReport;
report.RegData("TableVo"new WeightVo() { Code = "", Name = "" });
report.Compile();
report.Design();}
/// <summary>
/// 保存模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>private void StiDesigner_SavingReport(object sender, StiSavingObjectEventArgs e){
// 获取项目输出目录的路径
string outputDirectory = AppDomain.CurrentDomain.BaseDirectory;
report.Save($"{outputDirectory}\\Report.mrt");
MessageBox.Show("保存成功!");}
/// <summary>
/// 预览模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e){ // 获取项目输出目录的路径
string outputDirectory = AppDomain.CurrentDomain.BaseDirectory;
report.Load($"{outputDirectory}\\Report.mrt");
report.RegData("TableVo"new WeightVo() { Code = "001", Name = "这是一个打印测试模板" });
report.Compile();
report.Show();}
/// <summary>
/// 打印模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e){
// 获取项目输出目录的路径
string outputDirectory = AppDomain.CurrentDomain.BaseDirectory;
report.Load($"{outputDirectory}\\Report.mrt");
report.RegData("TableVo"new WeightVo() { Code = "001", Name = "这是一个打印测试模板" });
report.Compile();
report.Print();
}

四、性能优化

‌首次加载慢‌

提前初始化和编译模板,减少运行时延迟:

report = new StiReport();report.Load(strPath);  report.Dictionary.Synchronize();  // 提前加载并同步 ‌:ml-citation{ref="2" data="citationList"}

‌多线程打印卡顿‌

避免重复加载模板,直接渲染已编译的报表:

//report.Load(strPath);  // 注释掉重复加载report.Render();  StiPrinterSettings settings = new StiPrinterSettings();  // 配置打印参数 ‌:ml-citation{ref="2" data="citationList"}

五、文字自动缩放

通过设计器调整文本框属性以适配内容:

选中文本框 → 设置 AutoWidth 和 AutoHeight 为 true。

在 Font 属性中启用 Auto 选项 ‌6。

调整文本框尺寸后运行验证效果。

五、常见问题处理

‌组件查找与操作

StiComponent component = report.GetComponentByName("ComponentName");  // 按名称查找组件 ‌:ml-citation{ref="7" data="citationList"}component.Bookmark = "{Categories.CategoryName}";  // 添加书签 ‌:ml-citation{ref="7" data="citationList"}

‌排序设置

DataBand1.Sort = new string‌:ml-citation{ref="2" data="citationList"} { "ASC""Name" };  // 按字段升序排列 ‌:ml-citation{ref="7" data="citationList"}

StiReport 核心定义与功能

‌StiReport‌ 是 ‌Stimulsoft‌ 公司开发的一款跨平台报表生成工具,主要用于设计和生成动态数据驱动的专业报表。其核心特性包括:

‌多平台支持‌

支持在 ‌WinForms‌、‌ASP.NET‌、‌.NET Core‌、‌JavaScript‌、‌WPF‌ 等环境中使用,适用于桌面、Web 及移动端应用开发‌。

‌动态数据绑定‌

可灵活绑定数据库表、对象列表等数据源,支持运行时动态更新数据。例如,通过 RegData 方法注册数据表并同步字典以识别新字段‌。

‌模板设计与导出‌

通过 .mrt 模板文件定义报表布局,支持导出为 ‌PDF‌、‌Excel‌、‌HTML‌ 等格式,并集成打印功能‌。

典型使用场景

‌企业级应用‌

适用于财务系统、销售统计等需要复杂报表展示的场景‌。

‌多平台开发‌

在混合技术栈(如 WinUI、PHP、Java)中统一报表生成逻辑,减少重复开发成本‌。

‌动态数据需求‌

处理频繁变化的数据源,例如实时库存报告或订单状态更新‌。

技术实现要点

‌模板加载与优化‌

首次加载模板时建议预编译并同步数据字典,避免运行时延迟‌。

‌数据源管理‌

动态更新数据前需清除旧数据源(Dictionary.DataSources.Clear()),防止残留数据冲突‌。

与其他报表工具的区别

StiReport 强调 ‌跨平台兼容性‌ 和 ‌动态数据交互能力‌,其设计器提供可视化操作界面,降低代码依赖,适合快速生成复杂格式的报表‌。


阅读原文:原文链接


该文章在 2025/3/25 10:37:47 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved