找回密码
 立即注册

QQ登录

只需一步,快速开始

JoeJin

超级版主

10

主题

62

帖子

306

积分

超级版主

Rank: 8Rank: 8

积分
306
JoeJin
超级版主   /  发表于:2023-5-11 13:55  /   查看:1043  /  回复:1
本帖最后由 JoeJin 于 2023-5-11 13:58 编辑

近期需要通过SpreadJS和GCExcel做一个自定义报表Demo。所以学习了一波SpreadJS和GCExcel,作为新人(一个没怎么学过前端和JAVA的小白)在这里总结一下自己的学习过程分享给大家,希望能帮助新人小伙伴少踩坑。结尾有附件,是学习完的结果,大家可以下载参考。

做个简单做个自己的技术栈介绍,这样大家方便对号入座。
  • 会一丁丁C#,但是不会Java
  • 会一丢丢HTML, JS 和 CSS
  • 会一捏捏React
  • 会一点点Excel
  • 会一猫猫数据库(但是这个好像没啥用)


基本就是以上这样了。下来就开始吧。

作为第一期,我们可能需要先思考一下都要做什么。
首先报表可能需要一些数据源,因此我们第一大块是要做数据源。
其次,我们可能要考虑数据的展示,报表得把数据加工之后展示出来。
最后,可能得有导出,通常报表会有打印或者保存的需求,导出成PDF或者Excel可能是需要的了。


那废话不多说,先把环境搞一下吧。看了一下SpreadJS里有React的例子,那我们就做一个React的前端工程吧。

上npm,先新建一个叫report-demo的react工程。(使用命令之前,需要安装nodejs和npm,不会的小伙伴,可以度娘一下如何安装)
  1. npx create-react-app report-demo
复制代码

经过漫长的等待之后,我们用visual studio code(VSC)打开新建的工程folder。
image.png930602111.png

使用ctrl+`,打开VSC的命令行,执行一下命令
  1. npm start
复制代码
image.png918849487.png

Nice,这样我们就有了一个react的环境,可以在这个基础上开启我们的SpreadJS之旅了。

OK,下来让我们把SpreadJS加入到这个工程里,因为我们是本地做开发不涉及再发布,那我们使用评估版就可以了,先把license花钱的事情丢在一边就好。
回到VSC,在命令行里按 ctrl+c 把nodejs停下来。
友情提示,按了ctrl+c以后,会提示是否要停止,输入y就可以了。
image.png633100585.png

下来我们要把SpreadJS引入到工程里。来,上命令~
分别执行以下两个命令:
  1. npm install @grapecity/spread-sheets
复制代码
  1. npm install @grapecity/spread-sheets-react
复制代码


然后打开package.json文件,可以看到在dependencies下,增加了两个依赖项。
image.png172452086.png

我们也可以通过手动修改package.json。然后通过命令来下载依赖包,和上面的安装方法是等价的。
  1. npm install
复制代码


目前来看,非常顺利,让我们把引入的SpreadJS用起来,找一个示例参考一下,就看看下面的这个吧。
https://demo.grapecity.com.cn/sp ... nitialization/react
image.png786247253.png
看起来很简单的样子,SpreadJS有自己的component,然后会触发一个initialize的事件,我们可以在这个事件里处理方法里搞事情。
让我们修改一下自己的代码,回到VSC,打开src/app.js。目前的代码如下:
image.png224356993.png

直接把红框内容改成这样
  1. <SpreadSheets workbookInitialized={spread => this.initSpread(spread)}>
  2.                 </SpreadSheets>
复制代码
image.png562222289.png

然后加上initSpread方法,官方文档的示例里名字叫initSpread,那我们就不改了,直接给它把方法定义好就行。
  1. const initSpread = (spread) =>{   
  2.     let sheet1 = spread.getSheet(0);
  3.     sheet1.setValue(0, 0, 'Hello World!');
  4.   }
复制代码
image.png642285155.png

兴奋心起,来让我们赶紧保存代码,然后npm start一下康康。(旁白:你还没有加import呢,能run起来就见鬼了)。

非常nice,果然run不起来。但问题很简单,就是我们忘记import了。那我们加上,让react知道<SpreadSheets>是什么就行了。
image.png975679016.png

加上下面的代码,如图上第一行。这个时候,我们没有停止nodejs,所以保存一下就可以在浏览器里看到结果了。
  1. import { SpreadSheets } from '@grapecity/spread-sheets-react';
复制代码
image.png279947814.png

opps,又出错了。说我们的initSpread没有定义。
image.png768603210.png

简单,我们把“this.”去掉就行了。
image.png318770751.png

OK,成功了,但发现怎么和官方的样子不太一样呢?
image.png451916808.png

查了查官方的示例,发现是我们没有引用官方提供的样式。所以添加一下css文件。
  1. import '../node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css';
复制代码
image.png864557800.png

保存再试试,非常nice~
image.png364149779.png

保存一下自己的代码变更,以防代码丢失。写一个comment,点击commit,提交~
image.png438623351.png


这样子,SpreadJS的环境搭建就完成了,下一步就要开始考虑数据源的问题了~

chatper-01.zip

307.86 KB, 下载次数: 16

评分

参与人数 1金币 +666 收起 理由
JoestarXu + 666 很给力!

查看全部评分

1 个回复

倒序浏览
MillionDream
注册会员   /  发表于:2023-5-11 17:44:18
沙发
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部