当前位置: 首页 > news >正文

ActiveReportsJS如何在Angular报表设计器中构建资产负债表

企业利用资产负债表来展现其在特定时间点的财务状况。通过汇总资产、负债和所有者权益,这些报告有助于债权人、投资者和利益相关者评估公司的财务健康状况和稳定性。

对于构建业务应用程序的开发者而言,生成和交付资产负债表等报表是一项常见需求。用户希望无论使用何种设备或身处何地,都能直接在他们使用的应用程序中设计、查看报表并与之交互。ActiveReportsJS 的 Angular 报表设计器和查看器让这一切变得轻松简单,使您能够完全在浏览器中构建、自定义和显示报表。在本教程中,您将学习如何使用 Angular 报表设计器创建资产负债表报表,并使用 Angular 报表查看器显示它。

将 Angular 报表设计器添加到应用程序中

首先,我们需要将 ActiveReportsJS Angular 包添加到我们的应用程序中。在应用程序文件夹中,运行以下命令:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-command-line">npm i @grapecity/activereports-angular</code></span></span></span></span>

安装完成后,您就可以在应用程序中使用 ActiveReportsJS Angular 库了。接下来,我们需要确保正确的模块已加载到应用程序中,并且所有必需的文件都已正确引用。

在app.module.ts文件中 ,导入以下模块:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-javascript"><span style="color:#0077aa">import</span> <span style="color:#999999">{</span> ActiveReportsModule <span style="color:#999999">}</span> <span style="color:#0077aa">from</span> <span style="color:#669900">'@grapecity/activereports-angular'</span><span style="color:#999999">;</span></code></span></span></span></span>

这样可以确保我们可以在标记中访问 Angular 报表设计器。另外,别忘了将其添加到导入列表中:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-javascript">imports<span style="color:#9a6e3a">:</span> <span style="color:#999999">[</span> BrowserModule<span style="color:#999999">,</span> ActiveReportsModule <span style="color:#999999">]</span></code></span></span></span></span>

现在,我们可以在应用程序中引用报表设计器;但是,在实现设计器之前,我们需要包含所需的 CSS 文件。

对于 ActiveReportsJS,我们需要在应用程序的styles.css文件中导入这些文件。这些文件必须在此处加载,否则样式将不会应用于控件。在该文件中,包含以下导入语句:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-css"><span style="color:#0077aa">@import <span style="background-color:rgba(255, 255, 255, 0.5)"><span style="color:#9a6e3a">"@grapecity/activereports/styles/ar-js-ui.css"</span></span><span style="color:#999999">;</span></span> <span style="color:#0077aa">@import <span style="background-color:rgba(255, 255, 255, 0.5)"><span style="color:#9a6e3a">"@grapecity/activereports/styles/ar-js-designer.css"</span></span><span style="color:#999999">;</span></span></code></span></span></span></span>

现在所有必需的文件都已导入,我们可以开始在标记语言中使用报表设计器了。要引用报表设计器,请在app.component.html文件中添加以下代码:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-markup"><span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>div</span> <span style="color:#669900">id</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>designer-host<span style="color:#999999">"</span></span><span style="color:#999999">></span></span> <span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>gc-activereports-designer</span><span style="color:#999999">></span></span><span style="color:#990055"><span style="color:#990055"><span style="color:#999999"></</span>gc-activereports-designer</span><span style="color:#999999">></span></span> <span style="color:#990055"><span style="color:#990055"><span style="color:#999999"></</span>div</span><span style="color:#999999">></span></span></code></span></span></span></span>

这就是在应用程序中集成 Angular 报表设计器的全部步骤。请注意,我们还在设计器外包裹了一个 div 元素。这样做是为了方便我们控制设计器的大小。默认情况下,设计器会填充它所在的任何元素,所以我们这样做是为了控制其大小。

在app.component.css文件中 ,我们使用以下代码设置大小:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-css"><span style="color:#669900">#designer-host</span> <span style="color:#999999">{</span> <span style="color:#990055">width</span><span style="color:#999999">:</span> 100% <span style="color:#990055">height</span><span style="color:#999999">:</span> 100% <span style="color:#999999">}</span></code></span></span></span></span>

现在,当我们运行该应用程序时,应该会看到以下内容:

完成上述步骤后,我们可以添加保存报告的功能,我们将在下一节中介绍。

保存报告详情

在应用程序中添加报表设计器后,接下来我们需要添加用户保存报表的功能。幸运的是,ActiveReportsJS 报表设计器内置了几个事件,可以帮助我们实现这一目标:onSaveonSaveAs事件。

app.component.html文件中,修改报表设计器的标记,使其与以下内容匹配:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-markup"><span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>gc-activereports-designer</span> <span style="color:#669900">[onSave]</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>onSaveReport<span style="color:#999999">"</span></span> <span style="color:#669900">[onSaveAs]</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>onSaveAsReport<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#990055"><span style="color:#990055"><span style="color:#999999"></</span>gc-activereports-designer</span><span style="color:#999999">></span></span></code></span></span></span></span>

这将把onSaveonSaveAs这两个方法绑定到这两个事件上。现在,在app.component.ts文件中,我们将实现这些方法,以便在事件触发时可以使用它们:

<span style="color:#000000"><span style="background-color:#ffffff"><span style="background-color:#f5f2f0"><span style="color:black"><code class="language-javascript">counter <span style="color:#9a6e3a">=</span> <span style="color:#990055">0</span><span style="color:#999999">;</span> reportStorage <span style="color:#9a6e3a">=</span> <span style="color:#0077aa">new</span> <span style="color:#dd4a68">Map</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#dd4a68">onSaveReport</span> <span style="color:#9a6e3a">=</span> <span style="color:#999999">(</span>info<span style="color:#9a6e3a">:</span> any<span style="color:#999999">)</span> <span style="color:#9a6e3a">=></span> <span style="color:#999999">{</span> <span style="color:#0077aa">const</span> reportId <span style="color:#9a6e3a">=</span> info<span style="color:#999999">.</span>id <span style="color:#9a6e3a">||</span> <span style="color:#669900">`</span><span style="color:#669900">NewReport</span><span style="color:#999999">${</span><span style="color:#9a6e3a">++</span><span style="color:#0077aa">this</span><span style="color:#999999">.</span>counter<span style="color:#999999">}</span><span style="color:#669900">`</span><span style="color:#999999">;</span> <span style="color:#0077aa">this</span><span style="color:#999999">.</span>reportStorage<span style="color:#999999">.</span><span style="color:#dd4a68">set</span><span style="color:#999999">(</span>reportId<span style="color:#999999">,</span> info<span style="color:#999999">.</span>definition<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#0077aa">return</span> Promise<span style="color:#999999">.</span><span style="color:#dd4a68">resolve</span><span style="color:#999999">(</span><span style="color:#999999">{</span>displayName<span style="color:#9a6e3a">:</span> reportId<span style="color:#999999">}</span><span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#999999">}</span> <span style="color:#dd4a68">onSaveAsReport</span> <span style="color:#9a6e3a">=</span> <span style="color:#999999">(</span>info<span style="color:#9a6e3a">:</span> any<span style="color:#999999">)</span> <span style="color:#9a6e3a">=></span> <span style="color:#999999">{</span> <span style="color:#0077aa">const</span> reportId <span style="color:#9a6e3a">=</span> <span style="color:#669900">`</span><span style="color:#669900">NewReport</span><span style="color:#999999">${</span><span style="color:#9a6e3a">++</span><span style="color:#0077aa">this</span><span style="color:#999999">.</span>counter<span style="color:#999999">}</span><span style="color:#669900">`</span><span style="color:#999999">;</span> <span style="color:#0077aa">this</span><span style="color:#999999">.</span>reportStorage<span style="color:#999999">.</span><span style="color:#dd4a68">set</span><span style="color:#999999">(</span>reportId<span style="color:#999999">,</span> info<span style="color:#999999">.</span>definition<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#0077aa">return</span> Promise<span style="color:#999999">.</span><span style="color:#dd4a68">resolve</span><span style="color:#999999">(</span><span style="color:#999999">{</span>id<span style="color:#9a6e3a">:</span> reportId<span style="color:#999999">,</span> displayName<span style="color:#9a6e3a">:</span> reportId<span style="color:#999999">}</span><span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#999999">}</span></code></span></span></span></span>

首先,我们创建一个Map()对象来存储报表使用的键值对。然后,将报表信息作为参数传递,并将报表数据映射到该 Map 对象,最后返回一个包含报表信息的 Promise 对象。

请注意,这里使用的是内存中的报表存储。在实际部署时,您可能需要将报表定义(一个 JSON 对象)传递给后端进行存储。

向报表添加数据源和数据集

设计器已实现,保存功能也已添加完毕,现在可以开始构建资产负债表了。不过,在开始向报表中添加控件之前,我们需要获取一些数据以供显示。

要将数据绑定到报表,我们首先需要添加数据源。数据源是我们用来检索数据的地方。

要添加数据源,请打开数据面板,然后单击数据源面板中的“添加”按钮:

这将打开数据源向导:

ActiveReportsJS 支持两种数据绑定方法(远程和嵌入式)和两种数据类型(JSON 和 CSV)。在本演示中,我们将使用嵌入式 JSON 数据作为数据源。

现在,我们已经有了可以从中提取数据的数据源。但是,我们需要创建一个数据集来存储这些数据,以便在报告中引用它们。添加数据源后,我们需要单击数据源旁边的“添加”按钮,以打开数据集创建向导:

在这里我们可以设置要提取到报告中的实际数据。请注意,如果您使用的是远程数据,则可以向后端传递更多参数等选项。由于我们使用的是嵌入式数据,因此此处的选项较少。

为了正确加载数据,我们需要设置JSON Path字段。它起到类似过滤器的作用,允许您在构建数据集时控制要检索的数据。在本例中,我们需要所有可用数据,因此我们使用字符串$.*,它指示报表设计器提取所有可用数据。

在保存数据源之前,我们需要确保能够验证数据。这只是为了检查在生成报表时,数据集是否能够真正从数据源中提取数据。如果一切正常,您应该会看到“数据库字段”数组已填充了值:

完成上述步骤后,我们就有了可以连接到控件的数据。在下一节中,我们将构建资产负债表,并向所使用的各个组成部分添加数据。

设计资产负债表并将数据与控制措施绑定

数据准备就绪后,我们现在可以在报表设计器中构建资产负债表。首先,我们要设置一个页眉来标识该报表。在设计器顶部,单击“节”选项卡,然后选择“添加页眉”。这将在该报表的顶部添加一个页眉节。

接下来,我们将把一个文本框和一个图像控件拖到页面页眉中。文本框的文本内容设置为“资产负债表”,图像控件中将嵌入一张图片,用于显示报表内容。

要嵌入图像,请选择图像控件,然后在属性面板的“操作”部分中,打开图像下拉列表,选择“嵌入”选项,然后单击“加载”按钮打开文件资源管理器并选择要上传的图像。

添加这些控件(并稍作样式设置)后,页面标题应该看起来像这样:

现在,我们将添加一些控件来显示公司的总资产和总负债。从控件工具箱中拖放一个表格控件到报表上。接下来,我们将删除页眉和页脚行。方法是右键单击要删除的行中的单元格,将鼠标悬停在“行”选项上,然后选择“删除行”。我们还要删除一列,因此请按照上述步骤操作,只是选择“列”“删除列”

然后,复制并粘贴此表,以便我们有两张表格。对于第一张表格中的单元格,我们将把它们的值设置为“总资产”“{TotalAssets}”,以及“总负债”和“{TotalLiabilities}”

最后,选择每个表格中的第二个单元格,在“属性”面板中找到“格式”属性,并将其设置为“货币”;这将确保我们的货币值以货币格式显示。

经过一些样式调整后,我们的报告现在显示如下:

完成上述步骤后,就可以开始添加其他表格来展示公司的各项资产和负债了。为此,我们将创建六个表格,分别涵盖以下几个方面:

  • 流动资产
  • 流动负债
  • 固定资产
  • 长期负债
  • 其他资产
  • 股东权益

为了方便起见,我们将创建一个表格模板,然后复制该模板并填写其余数据。

将另一个表格控件拖放到报表上,这次保留页眉和页脚行,但删除其中一列,使其只剩下两列。

接下来,我们将选中标题行中的两个单元格,并使用上下文菜单将它们合并。最后,我们还会添加一些样式,使标题行和页脚行更加醒目。我们将标题行的背景色设置为灰色,然后将页脚行的文本颜色设置为灰色。最后,在第二列中,我们将再次把格式设置为“货币”。

完成后,表格应该看起来像这样:

现在,我们将为每个要实现的数据表复制此表。以这份资产负债表为例,我们将有六个表:流动资产表流动负债表固定资产表长期负债表其他资产表股东权益表。请参阅下表,了解每个表的具体设置:

流动资产
银行存款银行存款
存货{存货}
预付费用预付费用
其他{其他当前资产}
全部的{总当前资产}
流动负债
应付账款应付账款
应缴税款应缴税款
应付票据(12个月)应付票据
流动部分长期债务{当前部分}
其他流动负债其他流动负债
全部的{Sum(总流动负债)}
固定资产
机械设备机械设备
家具及固定装置家具及固定装置
租赁物业改良{租赁物业改良}
房地产\建筑物{房地产和建筑物}
其他{其他固定资产}
全部的{总固定资产总和}
长期负债
应付银行贷款银行贷款应付账款
短期部分{短期部分}
应付股东票据{应付股东票据}
其他长期债务其他长期债务
全部的{总长期负债}
其他资产
员工应收款项员工应收账款
应收客户款项{客户应收账款}
无形资产无形资产
全部的{总和其他资产之和}
股东权益
普通股普通股
额外实缴资本{额外付费}
留存收益{留存收益}
全部的{股东权益总额之和}

表格设置完毕,报告就完成了!预览报告后,它应该看起来像这样:

结论

构建财务报表无需复杂的自定义 UI 或耗费大量开发精力。借助 ActiveReportsJS 及其 Angular 报表设计器和查看器,您可以创建精美且交互式的资产负债表,并将其直接集成到您的 Web 应用程序中,同时让最终用户能够灵活地在浏览器中设计和查看报表。无论您是构建内部业务工具、财务仪表板还是企业报表解决方案,ActiveReportsJS 都能提供您所需的组件,助您更快地交付专业的报表体验

http://www.jsqmd.com/news/1112325/

相关文章:

  • “眼睁睁看它穿墙而过!“:连续碰撞检测的“全程盯防“之道
  • 每日热门skill:AI终于长出手了!ai-web-automation:让OpenClaw自己上网干活,我摸了3天鱼
  • Artix-7 FPGA DPLL 实现 50Hz 工频同步 ADC 采样完整方案
  • DataDjinn v0.2.7:SSH 隧道连上了,表格工作区也终于更稳了
  • ModSecurity CRS实战:解决误报、性能瓶颈与规则更新的完整指南
  • AI数据中心与汽车行业在能源管理领域的技术融合
  • 毕业证遗失登报需要什么材料?毕业证遗失登报怎么办理?2026超全实操攻略
  • 深度学习模型参数量计算与形状推导实战指南
  • JMeter跨界UI自动化:统一测试工具链的实战方案
  • Git配置URL错误:esp-mirror配置问题解决指南
  • 辛辛那提 MATH1071 离散数学笔记(五)
  • SpringBoot+Vue 企业内部小型网络管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 还在愁毕业论文写不完?9款AI写作辅助软件一键生成逻辑连贯初稿!
  • ShadowPilot:基于 Solana 的隐私优先人形遥操作与数据收集平台
  • 算法学习笔记:排序算法
  • 电脑 C 盘清理指南
  • 2026 年国内开发者如何用好 GPT:充值避坑与代码提效实战
  • 计算机视觉入门到精通:构建识别、检测与分割的实战框架
  • Codex++ 接入 DeepSeek API 完全指南:从安装到实战
  • Brookfield与Bloom能源将融资规模扩至250亿美元
  • 实事求是的讲,写《【野生程序员】:优先招聘》的时候,
  • 搞个这样的APP要多久?
  • DAY 12
  • 免费数据恢复神器:TestDisk与PhotoRec完整指南
  • Moneta Markets亿汇:用路径方式看外汇领域风控思路,更容易形成稳定判断
  • 程序员读书这件事情
  • 出海运维实操:解决东南亚网站CDN缓存残留、页面不更新、快照错乱问题
  • 2026年卫浴行业趋势洞察:耐用花洒抽拉贴牌的合作考量
  • 95.基于 PLC 扫描周期原理!西门子 S7-1200 实现带软硬件互锁、防短路保护、自锁保持的电机正反转控制系统
  • 密码学博客:RSA大数分解数学特性、弱密钥原理、攻击场景与防御