首页 > 其他分享 >如何通过前后端交互的方式制作Excel报表

如何通过前后端交互的方式制作Excel报表

时间:2024-04-30 11:02:03浏览次数:24  
标签:报表 Excel binding && 数据源 交互 模板

前言

Excel拥有在办公领域最广泛的受众群体,以其强大的数据处理和可视化功能,成了无可替代的工具。它不仅可以呈现数据清晰明了,还能进行数据分析、图表制作和数据透视等操作,为用户提供了全面的数据展示和分析能力。

今天小编就为大家介绍一下,如何通过葡萄城公司的纯前端表格控件SpreadJS和后端表格组件GcExcel实现一张Excel报表模板并进行数据的录入与填报。

环境准备

Node.js

SpreadJS在线表格编辑器

代码文件(可作为阅读本文的参考)

前端

设计Excel报表模板

1. 加载制作报表的数据源:

打开SpreadJS在线表格编辑器,在设计分组报表之前,需要数据准备的相关工作,点击表格工具栏上【数据】Tab中的【数据源】按钮,为其添加好数据源。

通过【添加表】按钮添加每一个数据源对象(每一个数据源对象对应一张表),并配置读取数据的路径(路径可以是一个请求对应格式数据源的地址,也可以是一个服务端请求的地址,由服务端返回一个符合格式的数据源对象)。

数据路径为可选字段,如果json中包含多个数据源,可以通过设置数据路径进行区分。

2. 添加报表模板:

添加完数据源之后,点击【插入】Tab的报表按钮,插入一张新的报表模板,之前添加的数据源对象会在左侧的数据源列表中显示,如下图所示。

3. 设置分组报表:

通过拖拽左侧数据源列表中的字段,可以快速构建一个按照销售区域、省市、商品类型字段进行层层分组,统计销售额和利润的报表模板,如下图所示:

4. 保存Excel模板为sjs文件

修改Excel报表模板

将Excel报表模板保存为.sjs文件后,小编现在需要将Excel报表模板中的部分单元格转换为GcExcel模板语言,具体操作如下:

把.sjs文件放到SpreadJS前端代码的根目录下

5. 将Excel模板转化为GcExcel模板语法

以Excel报表模板(如下图所示)中的C4单元格(省份)为例,小编先通过getBindingPath方法拿到模板api的信息(下图中的DevTools中的队列信息)

获取到api的信息之后,再解析出它的绑定路径:

//此为部分代码,完整代码在文末的Gitee链接中
let binding = template.getBindingPath(r, c)  // binding内容如上图
// ... 
// 绑定路径
let path = ""
switch (binding && binding.type) {
    case "Group":
    case "List":
        if (binding.binding) {
            let p = binding.binding.match(/(?<=\[)[^\]\[]*(?=\])/g).join(".")
            path += ds + "." + p // path="销售数据.省份"
        }
        break;
    // ...
}

然后再解析出其合并类型和扩展方向:

// Group类型
let group = ""
if (binding && binding.type == "Group") {
    group = "G=M"
} else if (binding && binding.type == "List") {
    group = "G=L"
}
// Expand方向
let expand = ""
if (binding && binding.type != "Summary" && binding.spillDirection == "Vertical") {
   expand = "E=V"
} else if (binding && binding.type != "Summary" && binding.spillDirection == "Horizontal") {
   expand = "E=H"
}

最后将这些信息整合在一起,加上双花括号后,那么导出的Excel文件中的C4单元格的内容应该是如下的GcExcel模板语法:

{{ds.销售数据.省份(E=V,G=M)}}

6. 运行前端项目,导出Excel模板文件

  • 输入指令【npm install】下载依赖
  • 输入指令【npm run start】启动项目(启动后如下图所示)

最后将修改后的模板导出为Excel文件,如下图所示,可以看到,省份单元中的信息已经修改为GcExcel模板语法。

后端

打开GcExcel后端代码,将前面导出的Excel模板文件放到代码文件的根目录下,最后运行的main函数即可将数据传入Excel模板文件,最后会生成一个带数据的Excel报表。

结语

以上就是如何使用SpreadJS+GcExcel制作一张Excel报表的全过程,如果您想了解更多信息,欢迎点击这里查看。

扩展链接:

【干货放送】财务报表勾稽分析要点,一文读尽!

为什么你的财务报表不出色?推荐你了解这四个设计要点和!

纯前端类 Excel 表格控件在报表勾稽分析领域的应用场景解析

标签:报表,Excel,binding,&&,数据源,交互,模板
From: https://www.cnblogs.com/powertoolsteam/p/18163618

相关文章

  • Qt Excel读写 QXlsx的安装配置以及测试
    引言Qt无自带的库处理Excel文件,但可通过QAxObject借助COM接口进行Excel的读写1。亦可使用免费的开源第三方库:QXlsx,一个基于Qt库开发的用于读写MicrosoftExcel文件的C++库。它提供了一组简单易用的API,可以方便地创建、修改和操作Excel文件。一、安装配置1.下载源码,如下图所......
  • Qt Excel的读写
    在Qt中,可以使用第三方库来处理Excel文件,常用的库包括:QXlsx:一个基于Qt的Excel文件处理库,支持读写Excel文件。LibXL:一个商业的Excel文件处理库,支持多种编程语言,包括C++。OpenXLSX:一个开源的Excel文件处理库,支持读写Excel文件,支持多种操作系统。下......
  • 多人同时导出 Excel 干崩服务器!新来的阿里大佬给出的解决方案太优雅了!
    来源:juejin.cn/post/7259249904777838629前言业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;结合以上原因,对导出操作进行排队;刚开......
  • 通过Http链接地址爬取有赞微信商城商品信息及下载至EXCEL
    一、环境开发环境:MicrosoftVisualStudioProfessional2022(2)(64位)-Current版本17.7.7.netcore6.0AngleSharp1.1.2AngleSharp.Js0.15.0Downloder3.0.6Magicodes.IE.Excel2.7.5.1二、添加winform项目 三、添加html操作类 四、添加http请求帮助类......
  • 报表查询数据异常解决方法
      缘起  今天早上一到公司,技术支持的小伙就说一个后台报表,计算的任务完成率超过100%,有异常,客户要用,比较急,要解决这个问题。   解决过程    自从接了上任的报表计算,这个就头疼,没办法硬着头皮查什么原因,报表的SQL比较简单,一个查:接受任务数表a,一个查:完成任......
  • 解决PHPExcel超时、内存超出的问题
    一、PHPExcel导出数据量大的时候容易超时、内存使用超出限制。以前都是将PHP内存使用限制不断增大,超时时间不断增大来应对,但即使如此,web端导出时,浏览器依然会超时。考虑了Jquery+Ajax+table导出,数据量依然会使浏览器卡死,经尝试可以用以下方法,//打开PHP文件句柄,php://output......
  • vue与后端的数据交互
    一、前后端数据交互简单的前后端数据交互流程:·在前端(浏览器)中发起HTTP请求:使用前端框架(如Vue.js)或者原生JavaScript,您可以通过发送HTTP请求(如GET、POST、PUT、DELETE)向后端服务器请求数据。·后端服务器处理请求:后端服务器接收到前端发送的HTTP请求,并根据请求的类型和参数进......
  • Excel 图片
    /***获取图片*Excel文件中某一列都为图片多列图片这里需要读取指定的列c1**@paramworkbookworkbook*@paramsiteImgMapMap<Integer,List<byte[]>>siteImgMap多图片*/privatevoidarrangeExcelImg(XSSFWorkbookworkboo......
  • fastreport .net打印普通报表
    fastreport.net打印普通报表前言:.net代码层先不记录在这,后续会单独写一篇博客来记录。直接在工具上进行功能点的实现一、效果图二、功能点分页分页小计金额大写三、功能点实现3.1分页这个直接用工具自带的page当前页和TotalPages总页数当前页和总页数是根据当前......
  • Python中有很多库可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等
    Python中确实有多个库可以用于操作Excel文件,包括但不限于xlsxwriter、openpyxl、pandas和xlwings。以下是这些库的简要介绍和它们各自的优点:xlsxwriter:优点:专门用于创建新的.xlsx文件。提供了丰富的功能来创建复杂的Excel文档,包括图表、图片、自动筛选等。性能相对较......