抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
本帖最后由 采集赛道4 于 2025-10-4 16:16 编辑

一、效果展示
   
      
二、VS2022
界面设计:

后端代码
模板设计
项目文件

三、核心代码
/// <summary>

/// 设计模板

/// </summary>

/// <param name="sender">

/// <param name="e">
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 name="e">
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 name="e">

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 name="e">

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 强调 ‌跨平台兼容性‌ 和 ‌动态数据交互能力‌,其设计器提供可视化操作界面,降低代码依赖,适合快速生成复杂格式的报表‌。
<br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?获取邀请码

x
您需要登录后才可以回帖 登录 | 获取邀请码

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

Copyright 2010-2015. All rights reserved. 

微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码