找回密码
 立即注册

QQ登录

只需一步,快速开始

Web123.0

注册会员

4

主题

14

帖子

50

积分

注册会员

积分
50
Web123.0
注册会员   /  发表于:2022-8-9 17:59  /   查看:1692  /  回复:7
1金币
本帖最后由 Web123.0 于 2022-8-19 08:41 编辑

技术栈:
- Vue v2.x
- SpreadJS v15.0.4
- GcExcel v4.2.6

注:单元格下拉框在此统称“筛选器”,本贴中提及内容的相关代码过多,还涉及到内部代码,不方便贴代码到此

功能说明:
1、导出:由用户制作的报表,包括模板语法、筛选器和函数等功能
2、筛选器:使用自定义的日期范围筛选器,有用户手动选择日期范围,传递至后台进行数据筛选

自定义筛选器的实现,参考文章:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=100199 。将其中的Base()替换为ComboBox(),根据API文档中提供的相关方法进行设置即可。

问题:
1、自定义的日期范围筛选器只有Excel表格中主动添加时能正常使用,当使用toJSON()方法导出并保存至数据库。然后再次打开报表,预览报表内容时,原自定义的日期范围筛选器失效;我的理解,通过在SpreadJS中注册一个自定义下拉框类型即可使用,而不需要每次都对数据进行一次判断,再重新设置自定义的筛选器。


请问是否有注册自定义下拉框类型的功能?如果有注册功能,需要了解哪些API?

2、

在线报表导出到本地,原筛选器(非自定义)所在单元格的类型全部被重置为普通的文本,筛选器均失效,且筛选器选中内容全部为“值”,而不是“文字”。






最佳答案

查看完整内容

对于这个问题,因为Excel是不支持我们的下拉框因此导出之后会显示最终下拉框的值。 导出之后具体想展示哪个类型,可以通过红框指定。 如果是想实现下拉,可以通过序列实现,这个是excel所支持的。 第二个问题也是一样,excel不支持我们所定义的单元格类型以及单元格下拉框。因此,导出后,下拉框和类型都会丢失,仅保留最后的值。

7 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-9 17:59:02
来自 4#
Web123.0 发表于 2022-8-10 15:27
需求是在SpreadJS的表格中添加一个日期范围的选择器,用于选中特定范围的日期。e.g. 2022-08-01 至 2022- ...

对于这个问题,因为Excel是不支持我们的下拉框因此导出之后会显示最终下拉框的值。
image.png452521056.png

导出之后具体想展示哪个类型,可以通过红框指定。
image.png228405455.png

如果是想实现下拉,可以通过序列实现,这个是excel所支持的。
image.png584972228.png


第二个问题也是一样,excel不支持我们所定义的单元格类型以及单元格下拉框。因此,导出后,下拉框和类型都会丢失,仅保留最后的值。
image.png756639098.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-9 18:13:57
2#
我们有丰富的内置时间选择器,可以参考下面的demo
https://demo.grapecity.com.cn/sp ... -time-picker/purejs

并且导出之后也是会按照其显示text进行导出。
回复 使用道具 举报
Web123.0
注册会员   /  发表于:2022-8-10 15:27:36
3#
Derrick.Jiao 发表于 2022-8-9 18:13
我们有丰富的内置时间选择器,可以参考下面的demo
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutor ...

需求是在SpreadJS的表格中添加一个日期范围的选择器,用于选中特定范围的日期。e.g. 2022-08-01 至 2022-08-10。官方的相关资料中,暂时没发现符合需求的选择器,所以才自定义了一个日期范围选择器;至于SpreadJS内置的选择器,动态添加的方法我已经封装好了,测试结果是正常的。

至于导出的问题,我刚刚重新测试了一遍。简单说一下流程和现象。

流程:
设计器 》单元格编辑 》单元格类型 》组合框 》添加项目 》设置“文字”和“值”》确定

问题:
切换组合框的选中值,导出到本地,并且使用Excel打开,原组合框失效,单元格格式变为普通文本,展示内容为“文字”,无法点击展开切换其他值。

流程:
设计器 》单元格编辑 》单元格下拉框 》日期选择器 》默认配置,直接确定

问题:
切换日期选择器到具体日期,导出到本地,并且使用Excel打开,日期选择器失效,单元格格式变为普通文本,展示内容为具体日期,无法点击切换其他日期。

以上的操作流程是基于SpreadJS Designer 设计器操作,依然是导出到本地后,选择器全部失效。

在应用中,用户是通过自定义的按钮触发,选择目标数据,然后将数据格式化,再赋值给选择器,最后将目标选择器添加到表格中。应用中,整个流程没有出现问题,选择器的使用也是正常的。
回复 使用道具 举报
Web123.0
注册会员   /  发表于:2022-8-11 16:25:02
5#
Derrick.Jiao 发表于 2022-8-10 18:40
对于这个问题,因为Excel是不支持我们的下拉框因此导出之后会显示最终下拉框的值。

感谢,我这就去试试效果
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-11 17:47:56
6#
Web123.0 发表于 2022-8-11 16:25
感谢,我这就去试试效果

不用客气,有新问题欢迎随时补充哈~
回复 使用道具 举报
Web123.0
注册会员   /  发表于:2022-8-12 11:49:42
7#
Derrick.Jiao 发表于 2022-8-11 17:47
不用客气,有新问题欢迎随时补充哈~

昨天调试渲染的性能时,发现两个比较严重的问题。

需求:
1、所有列的宽度都要自适应
2、需要根据层级关系,设置分组,隐藏与展开

方案:
1、遍历所有列,使用autoFitColumn()方法,设置所有列的宽度
2、由GcExcel生成分组操作

问题:
1、遍历计算列宽时,调用autoFitColumn()方法耗时7s+,调用期间不能做任何操作。
2、生成分组信息时,耗时过长,且明显卡顿,期间无法做任何操作。

请问,如何解决这两个问题???除了上面的问题,其他的赋值到渲染完成,耗时400ms ~ 600ms;设置样式,耗时300ms上下,这些耗时完全可以接受。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-12 17:37:49
8#
Web123.0 发表于 2022-8-12 11:49
昨天调试渲染的性能时,发现两个比较严重的问题。

需求:

autoFitColumn确实会损耗比较大的性能,可以参考这篇帖子的方式绕一下
https://gcdn.grapecity.com.cn/fo ... read&tid=143095

另外,在调用autoFitColumn前先用suspendPaint挂起绘制,绘制完成后,再resumePaint恢复绘制,具体可以参考下面的demo
https://demo.grapecity.com.cn/sp ... /workbook/painting#

关于GcExcel这个问题这边未能复现,请提供对应的demo。

另外,因为这两个问题与本帖主题无关了,建议重开一个新帖将对应的信息补充,这边再来做进一步讨论。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部