提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李显亮|2021-08-24 10:05:26.647|阅读 161 次
概述:此示例项目展示了在运行时使用关系和自定义对象数据库创建报告的可能性。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Stimulsoft Ultimate是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。
Stimulsoft Reports不仅拥有强大的报表导出系统,而且还支持多种报表导出格式,拥有简单且强大的报表引擎。Stimulsoft Reports基本原则是,用简单常规的方法创建报表,将不同的技术应用于应用程序。Stimulsoft Reports.Java是一个专为在Java应用程序中的报表进行交互和处理的报表工具。
点击下载Stimulsoft Reports.Java v2021.3.1最新版
此示例项目展示了在运行时使用关系和自定义对象数据库创建报告的可能性。
首先,创建一个将存储数据的对象类:
public class ObjectCell { public String val; @Override public boolean equals(Object obj) { return val.equals(((ObjectCell) obj).val); } public String toString() { return val; } public ObjectCell(String val) { this.val = val; } }
接下来,创建从 StiDatabase 类扩展的父数据库并在连接事件上填充数据:
public class ParentDatabase extends StiDatabase { public ParentDatabase() { super("Demo.Parent"); // Database name } public void connect(StiDataStoreSource stiDataStoreSource, Boolean fillTable) throws StiException { DataTable dataTable = stiDataStoreSource.createNewTable(); for (int i = 0; i < 5; i++) { DataRow dataRow = dataTable.createNewRow(); dataRow.addCell("cId", new ObjectCell("Object" + i)); dataRow.addCell("cName", "Parent cId: " + i); } stiDataStoreSource.setDataTable(dataTable); } public void disconnect() { } public void connect(StiDataStoreSource stiDataStoreSource) throws StiException { connect(stiDataStoreSource, true); } }
接下来,创建相同的子数据库:
public class ChildDatabase extends StiDatabase { public ChildDatabase() { super("Demo.Child"); // Database name } public void connect(StiDataStoreSource stiDataStoreSource, Boolean fillTable) throws StiException { DataTable dataTable = stiDataStoreSource.createNewTable(); for (int i = 0; i < 5; i++) { for (int k = 0; k < 5; k++) { DataRow dataRow = dataTable.createNewRow(); dataRow.addCell("cId", new ObjectCell("Object" + i)); for (int j = 1; j < dataRow.getColumns().size(); j++) { // fill row wiht my data dataRow.addCell(dataRow.getColumns().get(j).getColumnName(), "Child cId: " + i + " value: " + j); } } } stiDataStoreSource.setDataTable(dataTable); } public void disconnect() { } public void connect(StiDataStoreSource stiDataStoreSource) throws StiException { connect(stiDataStoreSource, true); } }
要显示报告,我们需要创建 Java 查看器。创建 JFrame,设置必要的选项并添加查看器控件:
public class CreateRelationsReport extends JPanel { private static final long serialVersionUID = 330448692680237867L; private static final Dimension FRAME_SIZE = new Dimension(800, 800); public static void main(final String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { JFrame frame = new JFrame(); frame.add(new CreateRelationsReport(frame)); frame.setSize(FRAME_SIZE); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } catch (Throwable e) { StiExceptionProvider.show(e, null); } } }); } public CreateRelationsReport(final JFrame parentFrame) throws IOException { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); setPreferredSize(FRAME_SIZE); StiViewerFx viewerPanel = new StiViewerFx(parentFrame); add(viewerPanel); ...
接下来,创建新的报表对象,然后向其中添加父数据库和子数据库:
... StiReport report = new StiReport(); StiPage page = new StiPage(report); report.getPages().add(page); page.setName(StiNameCreation.createName(report, StiNameCreation.generateName(page))); report.setDictionary(new StiDictionary(report)); report.getDictionary().getDatabases().add(new ParentDatabase()); report.getDictionary().getDatabases().add(new ChildDatabase()); ...
接下来,在对象表源中设置自定义列:
... ListtableSources = new ArrayList(); // parent StiDataTableSource tSource = new StiDataTableSource("Demo.Parent", "Parent", "Parent"); tSource.setColumns(new StiDataColumnsCollection()); tSource.getColumns().add( new StiDataColumn("cId", "cId", StiSystemType.getSystemType("System.Object"))); tSource.getColumns().add( new StiDataColumn("cName", "cName", StiSystemType.getSystemType("System.String"))); tSource.setDictionary(report.getDictionary()); report.getDictionary().getDataSources().add(tSource); tableSources.add(tSource); // child tSource = new StiDataTableSource("Demo.Child", "Child", "Child"); tSource.setColumns(new StiDataColumnsCollection()); tSource.getColumns().add( new StiDataColumn("cId", "cId", StiSystemType.getSystemType("System.Object"))); for (int i = 0; i < 4; i++) { tSource.getColumns().add( new StiDataColumn("cData" + i, "cData" + i, StiSystemType.getSystemType("System.String"))); } tSource.setDictionary(report.getDictionary()); report.getDictionary().getDataSources().add(tSource); tableSources.add(tSource); ...
将带有文本框的标题栏和数据栏添加到报告中:
... // Create TitleBand StiHeaderBand titleBand = new StiHeaderBand(); titleBand.setHeight(0.85); titleBand.setName("TitleBand"); page.getComponents().add(titleBand); // Create Title text on header StiText headerText = new StiText(new StiRectangle(0, 0, page.getWidth(), 0.85)); headerText.setTextInternal("Tacticdescription"); headerText.setHorAlignment(StiTextHorAlignment.Left); headerText.setName("TitleHeader"); headerText.setFont(new StiFont("Arial", 12F, StiFontStyle.Bold)); titleBand.getComponents().add(headerText); Integer nameIndex = 1; ListdataBands = new ArrayList(); for (StiDataTableSource tableSource : tableSources) { // Create Databand StiDataBand dataBand = new StiDataBand(); dataBand.setDataSourceName(tableSource.getName()); dataBand.setHeight(0.5); dataBand.setName("DataBand" + nameIndex); nameIndex++; page.getComponents().add(dataBand); double pos = 0; double columnWidth = page.getWidth() / tableSource.getColumns().size(); for (StiDataColumn dataColumn : tableSource.getColumns()) { StiText dataText = new StiText(new StiRectangle(pos, 0, columnWidth, 0.5)); dataText.setText("{" + tableSource.getName() + "." + dataColumn.getName() + "}"); dataText.setName("DataText" + nameIndex.toString()); dataText.getBorder().setSide(StiBorderSides.All); dataBand.getComponents().add(dataText); pos = pos + columnWidth; nameIndex++; } dataBands.add(dataBand); } ...
报告的所有组件都已创建,我们现在可以配置数据关系:
... dataBands.get(1).setDataRelationName("Relation"); dataBands.get(1).setMasterComponent(dataBands.get(0)); ArrayListcols = new ArrayList(); cols.add("cId"); StiDataRelation rel = new StiDataRelation("Relation", tableSources.get(0), tableSources.get(1), cols, cols); report.getDictionary().getRelations().add(rel); ...
最后,呈现报告并将其显示在 Java 查看器中:
... report.Render(); viewerPanel.getStiViewModel().getEventDispatcher().dispatchStiEvent( new StiViewCommonEvent(StiViewCommonEvent.DOCUMENT_FILE_LOADED, new StiDocument(report), null)); }
在下面的屏幕截图中,您可以看到示例代码的结果:
Aspose、E-iceblue、FastReport、Stimulsoft等文档/报表图表类开发工具享超低折扣,如有需要可直接。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢