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

使用纯前端类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 纯前端表格控件,来生成所需的财务报告来支撑企业的财务应用。

    推荐阅读
  • 新手刷酸产品推荐干皮(敲详细刷酸教程)

    敲详细刷酸教程刷酸也有一段时间了今天做了个小小的总结,包含了各个阶段不同的刷酸方法~—先来说一下怎么去选酸新手——维A酸乳膏进阶——水杨酸棉片(0.5%浓度)老手——果酸(30%浓度)—如果之前没刷过酸的话,记得现。

  • 刀锋鞋适合什么人穿(刀锋鞋的原理)

    刀锋鞋适合什么人穿刀锋跑鞋当然适合跑步运动的青年人,不适合体重过大人群,刀锋跑鞋是2013年6月24日在美国波特兰发布一款结构减震跑鞋。鞋底搭载了16个由高科技聚合物制成的叶片,为跑者提供最高的纵向能量反馈。保护膝盖,减少运动消耗,延长运动时间,提高运动效率。

  • 石家庄紧急寻人通告(河北多地最新公告石家庄)

    石家庄紧急寻人通告行程轨迹公布!定州紧急提醒广大市民:2月28日0时至24时,天津市新增6例确诊病例,其中滨海新区4例、东丽区2例。截至目前,本轮疫情累计报告19例阳性感染者,均在定点医院治疗。为保障广大市民身体健康与生命

  • 2.7霸道加92号油可以吗 丰田霸道3.5可以加92号油吗

    有毒苯含量不得超过1%。是的,这款搭载奥迪新一代共轨直喷柴油发动机的A6L2.7TDI绝对值得好奇了解甚至驾驶。经过几天的试驾,这款奥迪A6L2.7TDI的总里程约为960公里,油表显示还能开100公里。从这几天试驾的操控性表现来看,奥迪A6L2.7TDI作为一款豪华行政轿车,其操控性和其他奥迪A6L一样稳健舒适。轮毂方面,A6L2.7TDI配备了与2.4款相同的7辐17英寸轮毂,轮胎尺寸完全相同。

  • 蒸2个鸡蛋要放多少水(这里有答案)

    蒸2个鸡蛋要放多少水?下面更多详细答案一起来看看吧!准备好所有材料,把两个鸡蛋放在碗中打散打匀。在鸡蛋液中加入156ml的饮用水,用筷子继续打匀。打匀后拿筛子把泡沫全部过滤掉,一定要过滤干净。盖上保鲜薄膜,防止水滴进去鸡蛋羹不平。小火蒸12分钟后,把火关掉,继续焖5分钟。五分钟后拿出来后在鸡蛋液上倒上酱油和麻油就可以开动了。

  • 简笔画少女古装美人(人物简笔画女孩可爱古装)

    少女古装美人简笔画你会画吗?儿童画第1页漫画图片简笔美女漫画人物简笔画少女古装古装漫画人物,下面来看看有没有你喜欢的简笔画少女古装美人?接下来我们一起去欣赏以下简笔画作品吧!

  • 如何让蒸蛋又嫩又滑好吃不翻车呢(蒸蛋又嫩又滑做法)

    接下来我们就一起去了解一下吧!如何让蒸蛋又嫩又滑好吃不翻车呢将鸡蛋打入碗里打散,一定要打得很散。加入温开水,边加水边搅拌,多搅拌几分钟。加入适量的盐,继续打散,用小勺撇去上面的一层泡沫不要。碗上盖上盖子,也可以用保鲜膜,蒸锅里加好水烧开,把蒸碗放入蒸锅。盖好盖子,蒸12分钟左右就好了。最后起锅后可加点葱花,芝麻油。

  • 牙膏怎么选择才是好的(如何选择牙膏)

    牙膏怎么选择才是好的试挤,质量良好的牙膏应能自然地挤出,膏体比较细腻光滑,并非正常的圆条状。在阳光反射下看细腻、光滑、洁净、无杂质和发黑现象,而质量低劣的牙膏发硬挤不出,或稍一挤膏体便大量涌出。试尝,将牙膏挤出少许试尝,质量好的牙膏香味纯正,无刺激味道。如果口感粗糙,有像沙子一样的颗粒滞留在嘴里,大多是含粗糙磨擦剂的牙膏,建议立即停用。对症选用药物牙膏,根据防蛀功效选用含氟牙膏。

  • 苹果充电器怎么保护(苹果手机如何充电才保护电池)

    苹果充电器怎么保护由于iPhone使用的是锂聚合物电池,并不存在记忆效应,因此并不需要等到手机彻底没电或者是低电量之后再充电,也就是说随时都可以充电。由于手机内还有一个充放电的计量芯片,每个月只需要完成一次完整的充放电就能够将电池进行校准。建议在充电的时候使用质量合格的充电器以及数据线,由于目前iPhone手机已经支持PD的快充协议,因此使用支持PD的快充头是能够支持快充。

  • 汽车电瓶什么情况下才换(汽车电瓶换完了)

    与电动转向泵通信才是重点发动机电脑自身可是重要部件,它要坏了,可能就打不着车了,所以咱们检查电动转向泵,这个标致3008,电动转向泵油是不缺的,通过诊断电脑我们去查找泵的电路图,搞清楚泵的供电和接地以及信号线。至此真相大明,紧固螺丝,清除故障码,试车正常。我接着说,重点在于你没换电瓶之前,都是好的,她说是的是的,这个标致3008外形时尚,平时开着也省心,我很喜欢这车,但就是换了电瓶之后就这不好,那不好了。