找回密码
 立即注册

QQ登录

只需一步,快速开始

Litt101

注册会员

16

主题

52

帖子

174

积分

注册会员

积分
174

[已处理] v12获取样式问题

Litt101
注册会员   /  发表于:2024-9-11 16:59  /   查看:681  /  回复:11
1金币
使用spread.importExcel导入excel,
保存后根据 spread.fromJSON加载,
我们处理的时候,通过以下代码获取样式

var cellStyle = sheet.getStyle(cell.row, cell.col, GC.Spread.Sheets.SheetArea.viewport, true) || new GC.Spread.Sheets.Style();
var formatter = cellStyle.formatter;

但是附件中的表,U6,V6,W6,X6四个单元格获取的formatter 为undefined,请问什么情况下,cellStyle.formatter为undefined,我们好避免一下

预算表测试.zip

24.3 KB, 下载次数: 12

最佳答案

查看完整内容

您好!在没有设置formatter的情况下,获取formatter的结果就是undefined。即便对单元格设置了样式,未在Style对象中显式设置formatter的情况下,其formatter值也是undefined。只有对单元格设置了formatter,其formatter才有非undefined值。 但是,如果将SpreadJS导出为.xlsx文件,再导入后formatter即有了默认值,这是由于SpreadJS和Excel对formatter的设计不太一样所致。

11 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-9-11 16:59:49
来自 11#
Litt101 发表于 2024-9-14 15:32
老师,你好,我们的客户想明确下获取不到单元格样式问题出现的原因,后期可避免类似的问题

您好!在没有设置formatter的情况下,获取formatter的结果就是undefined。即便对单元格设置了样式,未在Style对象中显式设置formatter的情况下,其formatter值也是undefined。只有对单元格设置了formatter,其formatter才有非undefined值。

但是,如果将SpreadJS导出为.xlsx文件,再导入后formatter即有了默认值,这是由于SpreadJS和Excel对formatter的设计不太一样所致。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-11 17:56:03
2#
您好!我们在12.0.0版本导入您提供的.xlsx文件,并使用您提供的代码获取U6、V6、W6、X6这几个单元格的样式formatter,均可获得有效内容,如下动图所示:
V12获取样式.gif

请问下您使用的具体版本号是多少呢?
回复 使用道具 举报
Litt101
注册会员   /  发表于:2024-9-11 18:20:12
3#
Wilson.Zhang 发表于 2024-9-11 17:56
您好!我们在12.0.0版本导入您提供的.xlsx文件,并使用您提供的代码获取U6、V6、W6、X6这几个单元格的样式f ...

版本是12.1.0,老师,这个和excel的版本有关系吗
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-12 08:52:55
4#
Litt101 发表于 2024-9-11 18:20
版本是12.1.0,老师,这个和excel的版本有关系吗

因为SpreadJS至今已经迭代更新了很多版本了,版本之间的相同功能可能存在一些改进增强,因此确认版本是为了更准确的聚焦问题、分析问题。我们在12.1.0版本也测试了,也可以获取到上述四个单元格的formatter,附件demo即我们测试使用的demo,您可以参考。

V12.1.0获取样式.html

7.98 KB, 下载次数: 13

回复 使用道具 举报
Litt101
注册会员   /  发表于:2024-9-12 13:32:20
5#
Wilson.Zhang 发表于 2024-9-12 08:52
因为SpreadJS至今已经迭代更新了很多版本了,版本之间的相同功能可能存在一些改进增强,因此确认版本是为 ...

var cellStyle = sheet.getStyle(cell.row, cell.col, GC.Spread.Sheets.SheetArea.viewport, true) || new GC.Spread.Sheets.Style();
var formatter = cellStyle.formatter;
老师,什么情况下上面的formatter 会是undefined啊,项目上确实出现了这样的情况
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-12 16:42:09
6#
Litt101 发表于 2024-9-12 13:32
var cellStyle = sheet.getStyle(cell.row, cell.col, GC.Spread.Sheets.SheetArea.viewport, true) || n ...

没有设置formatter的情况下就是undefined,我们确实没能复现您所描述的问题,您可以试运行在4楼给您提供的demo,在demo中使用了您提供的代码片段获取U6、V6、W6、X6等四个单元格的样式formatter。由于未能复现问题,无法进一步深入判断分析, 猜测您可能需要获取这几个单元格的样式formatter再做其他业务处理,请问下您的需求场景是什么呢?咱们一块探讨下。
回复 使用道具 举报
Litt101
注册会员   /  发表于:2024-9-12 16:57:41
7#
Wilson.Zhang 发表于 2024-9-12 16:42
没有设置formatter的情况下就是undefined,我们确实没能复现您所描述的问题,您可以试运行在4楼给您提供 ...

excel应该都有默认的样式,导入进来应该有样式才对,我们主要是获取样式,看单元格是否设置了精度,然后再进一步处理
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-12 17:39:58
8#
Litt101 发表于 2024-9-12 16:57
excel应该都有默认的样式,导入进来应该有样式才对,我们主要是获取样式,看单元格是否设置了精度,然后 ...

那也可以通过Worksheet:getFormatter()获取单元格上的数据格式,如果没有设置过formatter,一样会返回undefined,如下动图所示:
获取formatter.gif
回复 使用道具 举报
Litt101
注册会员   /  发表于:2024-9-14 15:16:57
9#
image.png397564696.png

预算表测试-风电.zip

16.24 KB, 下载次数: 7

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