请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

rfxa

初级会员

10

主题

23

帖子

256

积分

初级会员

积分
256
rfxa
初级会员   /  发表于:2017-12-19 10:07  /   查看:4155  /  回复:6
本帖最后由 rfxa 于 2017-12-21 17:10 编辑

现在要做这样一个功能:在表格某几个单元格中会写入内容,但打印时,这几个单元格不打印出来。但在线查看此表格时,这几个单元格是显示内容的。我的思路是:先标记这几个单元格,然后在打印时查找这几个单元格,清除这几个单元格的内容,等打印完毕后,再恢复这几个单元格内容。
请问,葡萄城表格是否有相关api可以实现此功能,主要是标记和查找。调用完打印后,马上设置单元格内容是否影响打印?

6 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-19 14:28:13
沙发
标记和查找这块您可以参考SpreadJS 标签这部分
http://demo.gcpowertools.com.cn/ ... le/#/demos/tagBasic
http://demo.gcpowertools.com.cn/ ... e/#/demos/tagSearch
不会影响打印
另外,您这样做比较麻烦,有个相对简单的方式,您可以初始化两个spreadjs,其中一个DIV来承载,一个没有,有DIV承载的用来显示,没有的用来打印,当点击打印按钮时,触发将显示中的内容toJSON,再fromJSON到用来打印的spread中,然后去掉您不想打印的内容,最后打印即可。
回复 使用道具 举报
rfxa
初级会员   /  发表于:2017-12-19 14:48:16
板凳
ClarkPan 发表于 2017-12-19 14:28
标记和查找这块您可以参考SpreadJS 标签这部分
http://demo.gcpowertools.com.cn/SpreadJS/TutorialSample ...

您说的思路,我看明白了,唯独:在打印的spread中去掉不想打印的内容,这个是怎么去掉,我能想到的还是需要标记和查找单元格后才能去掉某些单元格内容
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-19 16:17:39
地板
您好:如果要设置标记,那么您也应该知道要给哪些单元格设置标记的啊,您只要在打印用的spread中清除对应的单元格的内容即可。举个例子我需要A1单元格不显示,那么在打印的spread fromJSON之后我只需要调用该spread的sheet sheet.setValue(0,0,"");就可以清除了。
虽然打印的这个spread不显示,但并不代表不能够通过代码去控制其中的内容。
回复 使用道具 举报
rfxa
初级会员   /  发表于:2017-12-21 14:31:24
5#
ClarkPan 发表于 2017-12-19 16:17
您好:如果要设置标记,那么您也应该知道要给哪些单元格设置标记的啊,您只要在打印用的spread中清除对应的 ...

嗯,可能我需求没描述清楚,这些不用打印出来的地方是由用户确定的,所以对开发者来说,不清楚哪些单元格不用打印,只能靠查找用户设置的标记,来实现打印的特殊处理。
回复 使用道具 举报
rfxa
初级会员   /  发表于:2017-12-21 14:40:49
6#
场景是这样的:
第一步、用户1在系统中编辑表格,会打开设计器,用户1会在表格中选择哪些单元格打印时不显示,然后保存设置。
第二步、用户2在系统中使用了第一步的表格,浏览此表格后使用了打印功能,打印出的内容不显示第一步设置的单元格的内容。

实现思路:
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-21 16:47:04
7#
您好,因为spreadjs toJSON fromJSON序列化时tag标记也会被序列化到JSON中,所以反序列化到您打印的spread中时就是包含标记的,然后您通过查找标记,之后将指定的单元格的内容清除就可以了。
查找标记您可以参考:
http://demo.gcpowertools.com.cn/ ... e/#/demos/tagSearch
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部