爱美容
当前位置: 首页 美容百科

使用纯前端类Excel表格控件SpreadJS实现在线损益表应用(使用纯前端类Excel表格控件SpreadJS实现在线损益表应用)

时间:2023-05-29 作者: 小编 阅读量: 3 栏目名: 美容百科

财务报表是财务报告的主要部分,不包括董事报告、管理分析及财务情况说明书等列入财务报告或年度报告的资料。在此示例中,我们添加了AccountGroup列来表示报告的不同部分,并将包含数据的表命名为tblIncome。当实际收入回报高于预算预测或费用低于预算时,预算变化是积极的或有利的。我们将使用计算字段功能在数据透视表中添加差异和差异百分比。使用此功能按地区和财政年度过滤数据。

财务报表也称对外会计报表,是会计主体对外提供的反映企业或预算单位一定时期资金、利润状况的会计报表,由资产负债表、损益表、现金流量表或财务状况变动表、附表和附注构成。财务报表是财务报告的主要部分,不包括董事报告、管理分析及财务情况说明书等列入财务报告或年度报告的资料。

为了全面系统地揭示企业一定时期的财务状况、经营成果和现金流量,财务报表需按财政部会计准则的标准格式设计,因此,财务报表的典型特征是数据更新频繁、分析维度多、数据来源复杂,常规的报表工具很难同时满足上述所有需求。而借助葡萄城 纯前端表格控件 SpreadJS 和 服务端表格组件 GcExcel 来设计财务报表模板,可以在满足财务数据展示、计算、决策分析的同时,提供如 Excel 一般的使用体验,并可直接复用财务系统原始的 Excel 报表模板,减少从本地到线上的数据迁移工作量。

下面将会给大家展示如何在纯前端环境中,利用SpreadJS创建损益表,并将其添加到你的Web项目中。本文将使用 pivotTables(数据透视表)和 PivotTables Slicer(数据透视表切片器)来创建动态的损益表报告并与之交互。最终效果如图:

网页端利用数据透视表实现损益表

创建损益表大致步骤如下,文中针对每一步操作,都提供了可视化交互和编码两种实现方式:

1. 设置数据

2. 插入数据透视表

3. 构建数据透视表

4. 添加计算项

5. 添加计算字段

6. 添加切片器

7. 进行一些外观调整

8. 生成报告

设置数据

我们需要做的第一件事就是确保原始数据采用表格格式。这表示数据符合以下条件:

1. 把原始数据整理成标准的表格;

2. 每个列代表一个字段;

3. 没有空白行或列;

4. 数据中没有小计、总计这类二次计算的内容。

在此示例中,我们添加了 Account Group 列来表示报告的不同部分,并将包含数据的表命名为 tblIncome。

插入数据透视表

使用SpreadJS设计器组件可以实现可视化操作,下载SpreadJS安装包,从“\SpreadJS.Release.x.x.x\Designer\Designer Runtime”文件夹安装SpreadJS设计器,然后按照以下步骤插入数据透视表:

1. 选择 tblIncome 表

2. 在插入选项卡上单击数据透视表

3. 选择“新工作表”

4. 最后确定

或者,以上操作也可以通过编写javascript代码实现,参考以下代码:

let pivotTable = sheet.pivotTables.add("myPivotTable", "tblIncome", 1, 1);

构建数据透视表

为了准确构建数据透视表,我们将使用数据透视表面板。如果这里使用的是SpreadJS设计器,则每次单击数据透视表时,面板都会显示在工作表的右侧。

使用以下代码将其添加到 javascript 实例中:

var pt = spread.getActiveSheet().pivotTables.all()[0];var panel = new GC.Spread.Pivot.PivotPanel('myPivotPanel', pt, document.getElementById("panel"));panel.sectionVisibility(GC.Spread.Pivot.PivotPanelSection.fields |GC.Spread.Pivot.PivotPanelSection.area);

现在拖放右侧区域的字段以构建数据透视表。在我们的示例中:将 Account Group 和 Account 字段添加到 Rows,并将 Actual 和 Budget 添加到 Values。

注意:数据透视表可以在没有数据透视面板的情况下工作,我们只是添加了它以方便使用。

添加计算项

除了数据透视表字段中的现有项目外,这里还支持使用自定义公式创建一个或多个计算项目。

1. 单击数据透视表分析

2. 字段、项目和集合 → 计算项目

3. 设置名称 3. Gross Profit 并作为公式:='Account Group'['1.收入']-'账户组'['2.销货成本']

或者使用一行代码就可以添加计算项目:

pivotTable.addCalcItem("Account Group", "3. Gross Profit","='Account Group'['1. Revenue']-'Account Group'['2. COGS']");

按照上述步骤添加其他计算项。这些公式如下表所示:

这将使我们的损益表可读性更好。

添加计算字段

损益表经常使用方差分析进行业绩比较。当实际收入回报高于预算预测或费用低于预算时,预算变化是积极的或有利的。

我们将使用计算字段功能在数据透视表中添加差异和差异百分比。

1. 单击数据透视表分析。

2. 字段、项目和集合 → 计算字段。

3. 设置计算字段的名称差异。

4. 要在公式中添加字段,请选择该字段,然后单击“插入字段”。

5. 单击添加按钮。

或用JavaScript实现:

pivotTable.addCalcField('diff', '=Actual-Budget');pivotTable.add("diff", "Difference", GC.Spread.Pivot.PivotTableFieldType.valueField);pivotTable.addCalcField('diff%', '=Actual/Budget-1');pivotTable.add("diff%", "Difference %", GC.Spread.Pivot.PivotTableFieldType.valueField);

我们添加的两个字段是差异和差异 %。使用的公式如下:

添加切片器

在 SpreadJS v15 版本中,添加了切片器作为用于过滤数据透视表的新功能。使用此功能按地区和财政年度过滤数据。

如果使用的是SpreadJS设计器,执行以下操作:

1. 单击数据透视表分析

2. 插入切片器

3. 选择地区和财政年度

或使用JavaScript实现:

var regionSlicer = sheet.slicers.add("Region", pivotTable.name(), "Region", GC.Spread.Sheets.Slicers.SlicerStyles.dark1(), GC.Spread.Sheets.Slicers.SlicerType.pivotTable);var yearSlicer = sheet.slicers.add("Financial Year", pivotTable.name(), "Financial Year", GC.Spread.Sheets.Slicers.SlicerStyles.dark4(), GC.Spread.Sheets.Slicers.SlicerType.pivotTable);

进行一些外观调整

为了使数据透视表更易于阅读,这里进行了一些调整,例如:

折叠计算项

这将隐藏汇总的帐户以显示计算项目的值。

在组顶部显示小计

1. 转到设计选项卡

2. 单击小计

3. 选择“在组顶部显示所有小计”

在每个项目后插入空行

1. 转到设计选项卡

2. 单击空白行

3. 选择“在每个项目后插入空白行”

隐藏按钮和字段标题

1. 转到数据透视表分析选项卡

2. 单击按钮和字段标题

更改枢轴布局

1. 转到设计选项卡

2. 单击报告布局

3. 选择“以大纲形式显示”

上面提到的修改可以通过代码轻松更改。 SpreadJS 提供了许多不同的选项来根据应用程序的需要自定义数据透视表的外观和功能。我们可以更改数据透视表选项和布局,如下所示:

let option = pivotTable.options;option = {allowMultipleFiltersPerField: true,insertBlankLineAfterEachItem: true, // Insert Blank Line after Each Item *grandTotalPosition: GC.Spread.Pivot.GrandTotalPosition.row,subtotalsPosition: GC.Spread.Pivot.SubTotalsPosition.top, // Show SubTotals at the Top of the Group *displayFieldsInPageFilterArea: GC.Spread.Pivot.DisplayFields.downThenOver,reportFilterFieldsPerColumn: 1,bandRows:true,bandColumns: true,showRowHeader: true,showColumnHeader: true,showDrill: true, // Collapse Buttons *showMissing: true,showToolTip: true,missingCaption: 'something',fillDownLabels: false,repeatAllItemLabels: false,rowLabelIndent: 4,mergeItem: false,showHeaders: true // Collapse Field Headers *};pivotTable.layoutType(1); // Change the Pivot Layout to Outline Form *

条件和自定义格式

接下来,将格式化数据透视表字段。这里可以使用如下所示的数据透视面板设置格式:

1. 转到值 - > 值字段设置

2. 单击数字格式

3. 设置格式。在我们的例子中:$#,##0

4. 确认

如果想通过代码执行此操作,请参见下文:

//identify the areavar areaActual= {dataOnly: true,references: [{fieldName: "Actual",items: [fieldName]}]};var style = new GC.Spread.Sheets.Style();style.formatter = "$#,##0";//set style to the areapivotTable.setStyle(areaActual, style);

我们可以对其他字段使用相同的逻辑。使用下表对应的格式:

这里推荐使用条件格式,以使查看者更快地查看最大的帐户。数据透视表提供了为指定维度设置条件规则的能力。无论数据透视表布局如何变化,条件规则都只遵循指定的维度。

如果使用SpreadJS设计器,按照以下步骤添加条件格式规则:

1. 选择单元格:G7:H11

2. 主页 → 条件格式 → 新规则

3. 选择“根据单元格的值格式化所有单元格”

4. 格式样式:2 色标度(蓝色表示最高值,白色表示最低值)

对其他帐户组重复相同的操作,记住使用黄色作为费用和蓝色作为收入。

生成报告

下面是我们制作好的损益表报告截图:

以上就是如何使用 SpreadJS 纯前端表格控件,来生成所需的财务报告来支撑企业的财务应用。

    推荐阅读
  • 巴西暴雨对大豆的影响(农产品的收割和种植)

    巴西暴雨对大豆的影响作为世界重要的大豆产区,巴西马托格罗索州遭受暴雨袭击,大豆产量损失严重,影响到巴西国内大豆及大豆油市场。巴西马托格罗索州的农畜官表示,受恶劣天气影响,马托格罗索州连续普降大雨达一周之久。马托格罗索州的大豆产量占全国总产量的三成,此次大豆受损数量将近50万吨,这对巴西国内大豆市场和大豆油市场的影响不可小觑。

  • 梦见小白兔子是什么意思周公解梦 梦见小白兔子是什么意思周公解梦女

    梦见小白兔子,精神直觉上的认识和跳跃。小兔子被放出来表示精神重获自由,并且对过去的婚姻有了本质的认识。梦见手抱小白兔子、捉小白兔子,代表你会有客人到访,未有爱侣的将会觅得一个终生伴侣。梦见小白兔子梦见白兔,必有贵人所接。《敦煌本梦书》梦食白兔,吉。疾病者梦此,不用药亦有转机;怀孕者梦此,生女大贵,凡事皆吉。《敦煌本梦书》梦见兔子是吉兆,梦见养兔预示着你会远离灾祸,幸福平安。

  • 有多少人叫赵羽(赵羽迎融媒体时代)

    这一媒体的报道使“报纸消亡论”广为传播,继而引发众声喧哗、各抒己见。2008年10月,美国颇具影响力的报纸《基督教科学箴言报》宣布,将在2009年3月停止发行印刷报刊。实际上,菲利普·迈耶的“报纸消亡论”,不过是指出了纸媒的减少和衰落,并没有全盘否定纸媒的存在。

  • 二本选什么专业比较好就业(刚过二本分数线可以选择的专业)

    目前来说,专科应该是最难就业的,不仅要受到专业的限制还要受到学历的限制。而且本科生升职都是非常有利的,发展也是相当不错的。而且,这个专业的分数并不是特别高,有很多院校基本上是压线就能上。稳妥才是最重要的。对于这样的学生,只有一个原则,能走本科绝不走专科。这个概率只有一半。这对于学生而言,就是吃了大亏了。要知道,事物都是有概率的,就像复读一样,概率就是一半一半。高考的目的就是为了考大学,好就业。

  • 描写起床的优美句子(描写早晨的优美段落)

    睡眼惺忪迎接黎明,刷牙洗脸手要轻。阳光给我好心情,享受清新好空气。一杯热饮好甜蜜,家有人伴好温馨。新的一天,新期待,美好生活常伴您!早晨,美丽的、雄赳赳的和气昂昂的公鸡用激扬的叫声报晓着黎明的到来,此起彼伏地歌唱着。乡村慢慢地睁开睡眼惺忪的眼睛,在一阵舒服中醒来。一片无色的光线透过心爱的窗帘,照射在脸上。我快速地起床后,拉开帘布,推开窗户,浅吟低唱的微风轻轻地吹进,伴随着一股清鲜的气味扑鼻而来。

  • 我的世界里生成的村民怎么不干活(我的世界都有什么模式)

    我的世界里生成的村民怎么不干活?以下内容大家不妨参考一二希望能帮到您!我的世界里生成的村民怎么不干活村庄里面的村民,是有耕种范围的,自动农田需要远离村庄64格才能正常干活。玩家们可以在游戏中自由选择模式,在各种模式中体验不一样的有趣玩法,在生存模式中享受打怪、冒险等多种乐趣,在创造模式下享受当创世神的乐趣。

  • 九江德安春节期间黄码人员核酸检测点

    健康码黄码人员需接受必要的核酸检测、健康监测等措施。请提前报告社区,并在做好防护后再前往以下黄码人员核酸采样点。提交成功后,县区解码专员会在24小时内在线审核,实现网上转码全闭环操作。如还有其他需要解答的问题,请与属地指挥部或社区工作人员联系。

  • 四成网售儿童内裤不达标(网售4成儿童内裤抽检不合格)

    网售4成儿童内裤抽检不合格继不合格童鞋被曝光,儿童内裤也出了问题!前段时间,广西消委会委托广西产品质量检验研究院,对儿童内裤进行了测评结果发现:有四成网售儿童内裤不合格!!!涉及多个品牌,谨慎给孩子穿在这次测评中,消委会的工作。

  • 春节搞笑拜年祝福语(盘点春节搞笑拜年祝福语)

    春节搞笑拜年祝福语事业百尺竿头,爱情甜在心头,挣钱富得流油,祝你:好事连连,好梦圆圆!祝我最亲爱的朋友在新年里高举发财大旗,紧密团结在以人民币为核心的钱中央周围,坚持潇洒基本原则,把握艳遇、与钱俱进,把幸福的道理走到底!甭管大海再多水,大山再多伟,蜘蛛再多腿,辣椒再辣嘴,总之春节你最美!新年将至,为了地球环境与资源,请减少购买传统纸制贺卡,你可在大面值人民币上用铅笔填上贺词,寄给我!

  • 炖牛肉的方法(牛肉的炖煮方法)

    炖牛肉的方法炖牛肉时,应使用热水,不可用冷水,因为热水可以使牛肉表面蛋白质迅速凝固,防止氨基酸流失,保持肉味鲜美。旺火烧开后,揭开盖子炖20分钟以去除异味,然后加盖,改用微火,使汤面上浮油保持一定温度,以起到焖的作用。将少量茶叶用纱布包好,放入炉中与牛肉同炖煮,肉不仅熟得快,而且味道清香。加些酒或醋炖牛肉,可使肉更软嫩。放几个山楂或几片萝卜,令牛肉熟得快,而且可以驱除异味。