找回密码
 立即注册

QQ登录

只需一步,快速开始

石大正信
初级会员   /  发表于:2024-11-11 21:41  /   查看:328  /  回复:14
1金币
多个sheet组合在一起,调用setColumnWidth时,会把所有sheet里的列宽都调整了?怎么避免呢?只想调整单个sheet里的列宽。

最佳答案

查看完整内容

应该是反序列化的方式影响了,尝试将JSON数据字符串化后再在反序列化时解析,如下图所示: 之后,运行代码,修改第一个Workbook中sheet的列宽就不影响第二个Workbook中sheet的列宽,如下动图所示:

14 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-11-11 21:41:55
来自 12#

应该是反序列化的方式影响了,尝试将JSON数据字符串化后再在反序列化时解析,如下图所示:
修改代码.png737514648.png

之后,运行代码,修改第一个Workbook中sheet的列宽就不影响第二个Workbook中sheet的列宽,如下动图所示:
sheet不同步改变.gif

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-12 08:40:31
2#
您好!setColumnWidth是Worksheet用以设置列宽的接口,只对调用者Worksheet有效,您提到的“多个sheet组合在一起”是指将多个sheet的内容复制粘贴至一个单独的sheet中吗?
回复 使用道具 举报
石大正信
初级会员   /  发表于:2024-11-12 08:45:10
3#
sheet是单独的
sheet.setColumnWidth(0, 150.0, GC.Spread.Sheets.SheetArea.viewport)
这种情况是将所有sheet的0列都调整为150吧?我想只调一个
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-12 11:20:33
4#
石大正信 发表于 2024-11-12 08:45
sheet是单独的
sheet.setColumnWidth(0, 150.0, GC.Spread.Sheets.SheetArea.viewport)
这种情况是将所 ...

单独sheet调用setColumnWidth确实只会调整调用者sheet中指定列的宽度,如您提供的代码,将调整sheet中索引为0的列的宽度,不影响Workbook中其他sheet的列宽。如下动图所示:
接口调整列宽.gif

您可以对比动图中的测试场景是否与您的业务场景中“多个sheet组合在一起”一致,如不一致,需要介绍下“组合sheet”的方式,以及您使用的版本号。
回复 使用道具 举报
石大正信
初级会员   /  发表于:2024-11-12 14:10:40
5#
最终目的是导出PDF文件,将多个调整好宽度和高度的sheet,用mySpread.toJSON({ includeBindingSource: true })导出,用addSheet增加到同一个spread中,只有第一个sheet的格式是正确的,其他都又变化。如果单独导出都符合我调整的格式。
回复 使用道具 举报
石大正信
初级会员   /  发表于:2024-11-12 14:14:43
6#
和模板是否有关系,我是调用的同一个模板,感觉是按最后一次调整的格式
回复 使用道具 举报
石大正信
初级会员   /  发表于:2024-11-12 14:37:29
7#
是模板的原因,调整一个,其他的也跟着变,这种场景,怎么处理
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-12 17:35:23
8#
石大正信 发表于 2024-11-12 14:37
是模板的原因,调整一个,其他的也跟着变,这种场景,怎么处理

请问您说的”模板“是最终导出的粘贴了不同sheet的Workbook吗?
回复 使用道具 举报
石大正信
初级会员   /  发表于:2024-11-12 21:03:16
9#
设计器设计的,后缀是.ssjson的文件
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部