如何通过前后端交互的方式制作Excel报表
前言
Excel拥有在办公领域最广泛的受众群体,以其强大的数据处理和可视化功能,成了无可替代的工具。它不仅可以呈现数据清晰明了,还能进行数据分析、图表制作和数据透视等操作,为用户提供了全面的数据展示和分析能力。
今天小编就为大家介绍一下,如何通过葡萄城公司的纯前端表格控件SpreadJS和后端表格组件GcExcel实现一张Excel报表模板并进行数据的录入与填报。
环境准备
前端
设计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报表的全过程,如果您想了解更多信息,欢迎点击这里查看。
扩展链接:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微软开源 MS-DOS「GitHub 热点速览」
上周又是被「大模型」霸榜的一周,各种 AI、LLM、ChatGPT、Sora、RAG 的开源项目在 GitHub 上“争相斗艳”。这不 Meta 刚开源 Llama 3 没几天,苹果紧跟着就开源了手机端大模型:CoreNet。 GitHub 地址:github.com/apple/corenet 开源大模型虽好,但“吃”多了“大鱼大肉”也想来口“素菜”,正好有个“不务正业”的科技巨头。近日,微软和 IBM 共同决定将「MS-DOS 4.0」操作系统的代码开源,直接引来了一众开发者的围观,在短短几天的时间里,该项的 Star 数直接飙升了 1w。众所周知,搞 AI 离不开 GPU,网上关于 CPU 的学习资料不少,但 GPU 的资料却是凤毛麟角,「tiny-gpu」是一个从头学习 GPU 工作原理的开源项目。一般低代码平台都是用来构建前端项目,这个「Teable」是个例外一款低代码 Postgres 数据库。提到前端,采用最新 Vue 技术栈开发的「Douyin-Vue」作为 Vue 移动端实践项目,真不错! 最后,我实在没忍住,必须来两个 AI 项目,一个是能帮程序员写代码的「Aide...
- 下一篇
模型量化与量化在LLM中的应用 | 得物技术
一、模型推理优化 随着模型在各种场景中的落地实践,模型的推理加速早已成为AI工程化的重要内容。而近年基于Transformer架构的大模型继而成为主流,在各项任务中取得SoTA成绩,它们在训练和推理中的昂贵成本使得其在合理的成本下的部署实践显得愈加重要。 大模型推理所面临的挑战主要有以下两点: 巨大的内存(显存)需求,主要来自于模型本身参数和推理的即时需求。 对于一个LLaMA2-30B的模型,载入显存其模型本身需要约60GiB的显存,推理过程中,单个token的KV cache 需要1.6MiB左右的显存:6656(layer dim) * 52(layer num) *2 (K & V) * 2(fp16, 2bytes);对于一个2048个token的请求则需要3.3GiB的显存。 并行性较差,因为生成过程通常在时序上是一个串行的过程,导致decoding的过程较难并行,成为计算的瓶颈。 常见的推理优化方式有知识蒸馏(Knowledge Distillation,KD),剪枝(Pruning)和量化(Quantization),以及针对LLM的内存优化而提出的各种方案(如...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题