找回密码
 立即注册

QQ登录

只需一步,快速开始

想静静

注册会员

14

主题

39

帖子

135

积分

注册会员

积分
135
想静静
注册会员   /  发表于:2023-7-26 20:37  /   查看:1877  /  回复:21
背景 使用spreadjs重构wijimojs的透视表

目前遇到下面几个问题
1.使用汇总功能  option配置如下
GC.Spread.Pivot.PivotTableLayoutType.tabular
image.png231366271.png
subtotal和grandtotal不能显示在每个数据的上面
文档上面说类型设置为 tabular的时候,汇总不能放上面,但是只有tabular的时候,看起来特别像wijimo
2.空值的时候 显示 blank 怎么显示为空
image.png276231688.png
3.subtotal和total显示的是XX total如何改成subtotal
wijimo的样式
image.png385147399.png
spreadjs的样式
image.png746034545.png
4.合并后居中的条目,不能自适应的出现在视野中央,数据多了会随滚动条上移动,如何能够一直显示在视野中央,直到滚动到下一个不同内容
image.png509350585.png
5.透视面板的行数怎么自动计算,还是只能写死
a.有展开/收起功能后,条目数不一样,初始设置的条目小于,有汇总展开的条目数,多出的条目会被剪裁
b.展开/收起某个条目后,停留在当前行,可能当前行没有数据,又需要手动滚动到收缩的那条数据上

各位大佬,有解法的,欢迎指导一波


image.png141605223.png

21 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-27 10:25:29
沙发
SpreadJS与wjimo是两个不同的产品,而且SpreadJS是与Excel保持一致的,理论上来说是不支持将其变成与wjimo一模一样的。

因此对于您的问题,其中的第二个问题可以用pivot.options.missingCaption = null;来实现。

第四个问题我猜测是因为没有开启像素滚动,您使用spread.options.scrollByPixel = true;可以来实现。

第五个问题猜测可以通过PivotChanged事件自行实现,参考链接:https://demo.grapecity.com.cn/sp ... s#pivottablechanged

其他的两个问题目前是不支持使用SpreadJS的原生接口来实现的,如果您找到其他能够实现这个需求的方法也欢迎您分享一下,我们一起学习学习。
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
想静静
注册会员   /  发表于:2023-7-27 15:05:06
板凳
Joestar.Xu 发表于 2023-7-27 10:25
SpreadJS与wjimo是两个不同的产品,而且SpreadJS是与Excel保持一致的,理论上来说是不支持将其变成与wjimo ...

scrollByPixel设置位true了,好像没生效
pivot.options.missingCaption的值没有null的枚举,设置成空串/undefine都没效果,我试了下,设置成aa什么的也没生效
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-27 16:28:07
地板
想静静 发表于 2023-7-27 15:05
scrollByPixel设置位true了,好像没生效
pivot.options.missingCaption的值没有null的枚举,设置成空串/un ...

这边调研了一下,如果这些接口无法满足您的需求的话,这边也没有更好的方案了,目前SpreadJS的透视表是不和wjimo做外观上的统一的。
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
想静静
注册会员   /  发表于:2023-7-27 16:40:39
5#
本帖最后由 想静静 于 2023-7-27 16:58 编辑
Joestar.Xu 发表于 2023-7-27 16:28
这边调研了一下,如果这些接口无法满足您的需求的话,这边也没有更好的方案了,目前SpreadJS的透视表是不 ...

不需要一模一样,大概差不多就ok,上面遇到问题是比较突出的
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-27 17:44:11
6#
您好,SpreadJS的样式和wjimojs的样式本身上还是不支持的,所以对于您上文提到的问题1和问题3是没有办法支持的。

至于另外两个问题,这边也不清楚为什么不生效,请您提供一个可以复现这个问题的Demo,我们这边详细调研一下。
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
想静静
注册会员   /  发表于:2023-7-31 22:02:49
7#
Joestar.Xu 发表于 2023-7-27 17:44
您好,SpreadJS的样式和wjimojs的样式本身上还是不支持的,所以对于您上文提到的问题1和问题3是没有办法支 ...

事例如给出的附件,麻烦看一下,把index导入到项目中.麻烦数据自己造多一点
疑问如下:
1.父子组件传值给spreadjs透视面板不更新
2.有汇总的时候,透视表显示为空,而不是black
3.滚动的时候,最左边的数据处于视野中,直到下一个数据出现,也就是上面提问第4点
4.透视面板的行数怎么自动计算,还是只能写死,展开收起事件触发的时候自己实现能不能给个思路





aa.rar

2.53 KB, 下载次数: 56

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-1 11:31:37
8#
1、我看了您的代码,您是想点击查询按钮后,更新透视表的字段区域对吗?但是点击后没有生效,这是因为您没有执行重新设置透视表的代码,我在index.tsx的第二个useEffect中的spreadRef.current?.resumePaint();代码前添加了:

const sheet0 = spreadRef.current.getSheet(0);
sheet0.pivotTables.remove("myPivotTable");
initPivotTable(sheet0, "table");

image.png583401183.png

应该就可以解决您的问题。如我的理解有误,请您再详细描述一下。

2、3、这边调研了一下,目前无法修改汇总的blank显示数据,同时也无法做到第三点。

4、没太理解您这个问题的意思,透视面板的行数指的是什么?
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
想静静
注册会员   /  发表于:2023-8-1 14:36:03
9#
Joestar.Xu 发表于 2023-8-1 11:31
1、我看了您的代码,您是想点击查询按钮后,更新透视表的字段区域对吗?但是点击后没有生效,这是因为您没 ...

感谢指导,最后一个我想问的是,点击展开或者收起的时候,视野能够定位到刚才展开或者收起的那条数据上,现在如果收起后,当前行没有数据,需要滚动到上面,体验不友好,怎么能够知道展开或者收起后的那一行数据,然后定位到那条数据上,另外想要存储上次通过面板做的筛选配置,做本地存储,下一次进入页面的时候直接使用本地存储的配置api是什么?谢谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-1 16:32:18
10#
想静静 发表于 2023-8-1 14:36
感谢指导,最后一个我想问的是,点击展开或者收起的时候,视野能够定位到刚才展开或者收起的那条数据上,现在 ...

这边调研了一下,滚动的问题这边目前没有接口和方法可以去实现。筛选的配置官方没有api可以直接存储在本地的方法,只能您自行通过透视表的序列化和反序列化接口去实现。

https://demo.grapecity.com.cn/sp ... Table-1#deserialize
https://demo.grapecity.com.cn/sp ... otTable-1#serialize
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部