找回密码
 立即注册

QQ登录

只需一步,快速开始

littleknife
金牌服务用户   /  发表于:2019-1-21 15:42  /   查看:8887  /  回复:16
从excel复制一个单元格,该单元格的格式被设置为数值类型,且小数位数为2位。粘贴到spreadJS表格的时候,没有显示两位小数,请问这个问题怎么解决呢?

16 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-21 16:38:12
沙发
您好,SpreadJS不支持从Excel中带入Formatter的信息,

比较好的办法是根据用户粘贴进来的值进行类型判断,进而设置显示格式。

可以参考学习指南的自定义单元格格式:

https://demo.grapecity.com.cn/Sp ... mos/customFormatter
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2019-1-21 17:14:09
板凳
KevinChen 发表于 2019-1-21 16:38
您好,SpreadJS不支持从Excel中带入Formatter的信息,

比较好的办法是根据用户粘贴进来的值进行类型判断 ...

如何知道粘贴进来的值类型和需要显示的格式呢?可以给个例子吗
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-21 18:08:34
地板
您好,在重写GeneralFormatter的format方法中,您可以在第一个参数处获取到单元格的值,

如下列代码所示:


  1. // format方法中,第一个参数obj就是当前单元格的值
  2. CustomNumberFormat.prototype.format = function (obj, formattedData) {
  3.     if (typeof obj === "number") {
  4.         return formatNumber(obj, formattedData);
  5.     } else if (typeof obj === "string") {
  6.         if ($.isNumeric(obj)) {
  7.             return formatNumber(parseFloat(obj), formattedData);
  8.         }
  9.     }

  10.     return obj ? obj.toString() : "";
  11. };
复制代码


您可以针对粘贴区域预先设置好自定义格式,

在format方法中通过判断来识别值的类型,

当然也需要根据您的业务逻辑来指定对应的格式。
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2019-1-22 09:42:44
5#
KevinChen 发表于 2019-1-21 18:08
您好,在重写GeneralFormatter的format方法中,您可以在第一个参数处获取到单元格的值,

如下列代码所示 ...

新建了一个自定义单元格格式之后,我要怎么应用呢?
比如我在粘贴的时候可以获取到粘贴区域或单元格,然后我要怎么设置成这种自定义的单元格格式?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-22 11:31:43
6#
您好,设置自定义单元格格式的方式,可以参考下列代码:


  1. sheet.getRange(0, 0, 6, 2).formatter(new CustomNumberFormat());
  2. sheet.getRange(0, 1, 6, 2).formatter(new CustomDateFormat());
复制代码


您可以使用getRange方法来获取粘贴的目标区域,再利用formatter方法设置即可。

对于目标区域的获取,可以参考ClipboardPasting事件,API地址:

http://help.grapecity.com/spread ... oardPasting_EV.html
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2019-1-22 14:42:44
7#
KevinChen 发表于 2019-1-22 11:31
您好,设置自定义单元格格式的方式,可以参考下列代码:

那个格式能获取到从excel复制过来对应的格式吗,还是只能自己定一个格式?如果只是自己定死的话,就还是实现不了需求呀
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-22 17:31:29
8#
您好,格式确实无法从Excel中通过系统剪贴板获取,这是前端机制导致的问题,只能在最大程度上做work around来处理。

回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2019-1-22 19:48:01
9#
KevinChen 发表于 2019-1-22 17:31
您好,格式确实无法从Excel中通过系统剪贴板获取,这是前端机制导致的问题,只能在最大程度上做work around ...

这个能否推动开发实现呢?感觉像是个bug呀,我看其他类型的单元格的格式都是能成功被复制的,就这个数值类型的小数位数有问题。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-23 09:19:19
10#
无法粘贴formatter的原因是Excel没有把formatter放到系统剪贴板中,

系统剪贴板只能拿到Excel中formatter后的结果。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部