找回密码
 立即注册

QQ登录

只需一步,快速开始

采筑-周星

金牌服务用户

5

主题

16

帖子

49

积分

金牌服务用户

积分
49
采筑-周星
金牌服务用户   /  发表于:2021-8-24 14:27  /   查看:4521  /  回复:12
1金币
本帖最后由 采筑-周星 于 2021-8-24 14:33 编辑

使用toJSON方法导出单个sheet为json格式,原单元格保留两位小数,导出的json小数为多位
操作步骤
1.导入EXCEL  见附件
2.代码
`
var serializationOption = {
  ignoreFormula: false,
  ignoreStyle: true,
  rowHeadersAsFrozenColumns: true,
  columnHeadersAsFrozenRows: true
};`
`JSON.stringify(this.spread.getSheet(0).toJSON(serializationOption));`


image.png431160888.png

3.这个值里面的有两个单元格  值为1.222222  保留两位小数为 1.22,但是传给后端的是1.222222
image.png228314818.png


image.png484606627.png


请帮忙看看,谢谢

新建 Microsoft Excel 工作表.xlsx

8.1 KB, 下载次数: 191

最佳答案

查看完整内容

这边在SpreadJS的表单上通过sheet.toJSON,然后将这个JSON在GcExcel导入,接着再导出之后发现样式是丢失了。 出现这个问题是因为我们的有些__buildInStyle2样式是在workbook级别进行存储的,因此在worksheet级别的序列化的时候是不带有这些样式的。所以导入到GcExcel再导出来来之后是不带这些buildin的样式和格式。因此建议您使用workbook级别的序列化,也就是spread.toJSON(),而不是sheet.toJSON(),然后此时再传到后端才能正 ...

12 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-24 14:27:15
来自 13#
采筑-周星 发表于 2021-8-25 10:07
整个过程就是,前端导出一个sheet页面为JSON,后端接收JSON保存,前端拿到这个JSON做回显
回显发现以上 ...

这边在SpreadJS的表单上通过sheet.toJSON,然后将这个JSON在GcExcel导入,接着再导出之后发现样式是丢失了。 image.png548989257.png

出现这个问题是因为我们的有些__buildInStyle2样式是在workbook级别进行存储的,因此在worksheet级别的序列化的时候是不带有这些样式的。所以导入到GcExcel再导出来来之后是不带这些buildin的样式和格式。因此建议您使用workbook级别的序列化,也就是spread.toJSON(),而不是sheet.toJSON(),然后此时再传到后端才能正常拿到格式并解析。
image.png678388976.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-24 14:45:06
2#
这是正常现象,因为您的单元格真实值就是1.222222222,只是因为设置了formatter导致显示效果被formatter成了1.22。但是formatter本身不会改变单元格的真实值。所以tojson之后单元格的value仍然为1.222222222,如果您想要获取1.22这个值,您应该关注的是text这个属性而不是value。或者直接同API getText来获取单元格formatter之后的结果。
https://demo.grapecity.com.cn/sp ... ksheet.html#getText
回复 使用道具 举报
采筑-周星
金牌服务用户   /  发表于:2021-8-24 14:57:44
3#
Clark.Pan 发表于 2021-8-24 14:45
这是正常现象,因为您的单元格真实值就是1.222222222,只是因为设置了formatter导致显示效果被formatter成 ...

serializationOption   是否可以通过这个配置项来解决
我这边适用于后端的GCExcel回显的  值这样传过去本质上是没有问题的,但是后端GCEXcel和spreadJS应该是一样吧,用spread导出的JSON,导入到GCExcel  应该是一样的吧
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-24 15:00:07
4#
跟serializationOption没有关系,如果您后端用的是GcExcel,那么就用它的getText方法去获取
回复 使用道具 举报
采筑-周星
金牌服务用户   /  发表于:2021-8-24 15:07:41
5#
Clark.Pan 发表于 2021-8-24 15:00
跟serializationOption没有关系,如果您后端用的是GcExcel,那么就用它的getText方法去获取



就是说这种格式是不能带过去给到GCExcel的吗?我的理解是这种格式如果能带过去,那就解决了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-24 15:13:12
6#
我没有说不能吧,是说你用错了而已。简单来说,你要获取1.222222222就用getValue。
image.png891205139.png
你要获取1.22就用getText
image.png378893431.png
你要想获取formatter就用getNumberFormat
image.png27644041.png
回复 使用道具 举报
采筑-周星
金牌服务用户   /  发表于:2021-8-24 15:19:55
7#
Clark.Pan 发表于 2021-8-24 15:13
我没有说不能吧,是说你用错了而已。简单来说,你要获取1.222222222就用getValue。

你要获取1.22就用get ...

大佬,是我没有描述清楚,这个文件只是一个示例,实际上是一个很大的报表,我需要的是整个sheet页使用toJSON转成一个JSON,后端使用这个JSON进行回显,出现的这个问题
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-24 16:05:37
8#
你后端GCExcel进行回显,凭什么认为值不对了呢,是用API获取之后发现的吗?
回复 使用道具 举报
采筑-周星
金牌服务用户   /  发表于:2021-8-24 16:15:05
9#
Clark.Pan 发表于 2021-8-24 16:05
你后端GCExcel进行回显,凭什么认为值不对了呢,是用API获取之后发现的吗?

显示不一样了,在spreadJS显示的formatter后的值,在GCExcel显示的是value
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部