找回密码
 立即注册

QQ登录

只需一步,快速开始

nssol_sh

注册会员

3

主题

26

帖子

75

积分

注册会员

积分
75
最新发帖
nssol_sh
注册会员   /  发表于:2019-1-10 15:54  /   查看:6909  /  回复:18
大神们,又遇到问题了。搜了一下以前的帖子,貌似以前的版本也有这种问题。。。。请帮忙解决一下


在执行下边的语句时,从第三行拷贝10行出去。只有第四行的书式和条件格式被成功设置上了。后边的行都没带上格式。
用for循环逐行拷贝。就可以成功拷贝格式。但是非常影响效率。所以想一次性拷贝。

sheet.copyTo(3, 0, 4, 0, 10, 127, GC.Spread.Sheets.CopyToOptions.all);


Spread版本:V11.2.4

18 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-10 18:10:40
沙发
本帖最后由 KevinChen 于 2019-1-10 18:11 编辑

您好,您的问题我这边没能重现,您能否提供一个能够重现的Demo,我这边排查一下问题出在哪里。

PS:请把Demo依赖的V11.2.4的文件也附上,因为之前遇到过类似用户拿到的spread依赖包有问题。

评分

参与人数 1满意度 +5 收起 理由
nssol_sh + 5 回复速度快!

查看全部评分

回复 使用道具 举报
nssol_sh
注册会员   /  发表于:2019-1-10 18:29:08
板凳
KevinChen 发表于 2019-1-10 18:10
您好,您的问题我这边没能重现,您能否提供一个能够重现的Demo,我这边排查一下问题出在哪里。

PS:请把 ...

你好
不好意思。我这边的开发机跟上网机不能互通。所以上述素材无法提供。
大神能否提供个简单的好用的demo给我。我敲到开发机上试试。。

我再说一下我这边的情况。
我是在模板里做了一个空行。空行里某些单元格设定了两个条件格式。
满足某种条件的时候要把单元格的内容format成XX样的。
不满足某种条件format成另外一种格式。

然后把模板导入js里。根据后台传来的数据数量,来把模板的那个空白行连同条件格式一起往下拷贝出来。
假如是10条数据,就用模板那1个拷贝9个空白行出来。
但是执行这句话的时候。只能拷贝出来的的第一个空白行带着条件格式。后边的我怀疑压根就没拷贝。
sheet.setRowCount(13, sheetArea);
sheet.copyTo(3, 0, 4, 0, 9, 127, GC.Spread.Sheets.CopyToOptions.all);
回复 使用道具 举报
nssol_sh
注册会员   /  发表于:2019-1-10 18:31:42
地板
KevinChen 发表于 2019-1-10 18:10
您好,您的问题我这边没能重现,您能否提供一个能够重现的Demo,我这边排查一下问题出在哪里。

PS:请把 ...

spread依赖包有可能是什么问题呢?
我们用的包是从网上下的。
序列号是购买的。
能否给个范围,我这边自查一下
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-11 09:38:10
5#
您好,看了您的描述,我可能明白您的意思了,

你这边做了一个带样式的行,想把这一行向下复制10行出来。

但是copyTo这个方法执行的结果的与你的思路不符,

copyTo是把一个区域复制到另一个区域上,源区域与目标区域的大小应该是一致的,

所以按照这个思路,您上边的那个copyTo的调用实际上是把第3行向下9行127列的区域,

拷贝到第4行向下9行的区域,这样出来的效果只有第4行是你想要的效果。

所以这里您只能用for循环来实现,效率我这边试了,只要挂起绘制,不会慢。

在操作前,先调用suspendPaint挂起绘制:sheet.suspendPaint()

执行完成后再恢复绘制即可:sheet.resumePaint();

评分

参与人数 1满意度 +5 收起 理由
nssol_sh + 5 回复速度快!

查看全部评分

回复 使用道具 举报
nssol_sh
注册会员   /  发表于:2019-1-11 10:13:48
6#
KevinChen 发表于 2019-1-11 09:38
您好,看了您的描述,我可能明白您的意思了,

你这边做了一个带样式的行,想把这一行向下复制10行出来。 ...

你好。以上解答,明白了。
也就是说从一行拷贝到多行。是不行的。

我是在一个整个大方法的开头跟结尾做的挂起和恢复绘制。
我这边自己也调查了一些。模板里的条件格式去掉之后。循环拷贝实际上效率也是可以的。
应该是条件格式写的太复杂。现在试图把条件格式的功能移到js里。

想要实现的功能是这样的
价格的单元格,想入力
1234.567的时候,光标离开显示的是1,234.56
1234.56 的时候。显示的是1,234.56
1234.50 的时候,显示的是1,234.5
1234.00 的时候,显示的是1,234

这个有简单的方法可以实现吗

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-11 12:29:48
7#
nssol_sh 发表于 2019-1-11 10:13
你好。以上解答,明白了。
也就是说从一行拷贝到多行。是不行的。

您好,您这个有点类似于Excel的“会计专用”格式,但是又有不同,

1、1234.567最后一位不进位;
2、当小数最后一位为0时不显示。

如果您需要带着这个格式导出到Excel文档中,那只能用条件格式来做,

如果仅仅在SpreadJS中展示,可以用自定义单元格,在展示时拦截paint方法中的value进行改变应该可以实现。

现在就要确认一下您的文档是否有导出Excel文档的需求。

评分

参与人数 1满意度 +5 收起 理由
nssol_sh + 5 回复速度快!

查看全部评分

回复 使用道具 举报
nssol_sh
注册会员   /  发表于:2019-1-11 12:58:35
8#
KevinChen 发表于 2019-1-11 12:29
您好,您这个有点类似于Excel的“会计专用”格式,但是又有不同,

1、1234.567最后一位不进位;

你好。暂时没有导出excel的要求。

有从spreadjs里带着格式拷贝到excel里的要求。如果这个要求实现起来太困难暂时可以不考虑
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-11 15:03:43
9#
nssol_sh 发表于 2019-1-11 12:58
你好。暂时没有导出excel的要求。

有从spreadjs里带着格式拷贝到excel里的要求。如果这个要求实现起来 ...

您好,我验证了自定义单元格的方式解决这个问题,但是这样无法实现。

原因是由于格式化的逻辑被设计在单元格CellType格式化之后,

而且在CellType中并没有提供更改formatter的接口,因此使用条件格式几乎是唯一的办法了。

之所以说是几乎,还有一种办法,也很麻烦但是可以实现,就是利用自定义Formatter的方式,

示例代码如下:

  1.         var customFormatterTest = {};
  2.         customFormatterTest.prototype = GC.Spread.Formatter.FormatterBase;
  3.         customFormatterTest.format = function (obj, conditionalForeColor) {
  4.             return "My format result : " + obj.toString();
  5.         };
  6.         customFormatterTest.parse = function (str) {
  7.             if (!str) {
  8.                 return "";
  9.             }
  10.             return str;
  11.         };
  12.         sheet.getRange(1, 2, 4, 1).formatter(customFormatterTest);
复制代码


这就要求您自己实现每三位数字加一个分隔符的操作。您可以对比参考。

评分

参与人数 1满意度 +5 收起 理由
nssol_sh + 5 很给力!

查看全部评分

回复 使用道具 举报
nssol_sh
注册会员   /  发表于:2019-1-14 09:37:41
10#
本帖最后由 nssol_sh 于 2019-1-14 09:39 编辑
KevinChen 发表于 2019-1-11 15:03
您好,我验证了自定义单元格的方式解决这个问题,但是这样无法实现。

原因是由于格式化的逻辑被设计在 ...

我自己写了一个方法。感觉很繁琐[img]
初期表示的时候把format设置成“#,##0.##”
每次valueChanged事件触发的时候判断当前的format。动态改变format。

P90111-124243.jpg
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部