石大正信 发表于 2024-11-11 21:41:54

setColumnWidth只设置当前sheet

多个sheet组合在一起,调用setColumnWidth时,会把所有sheet里的列宽都调整了?怎么避免呢?只想调整单个sheet里的列宽。

Wilson.Zhang 发表于 2024-11-11 21:41:55

石大正信 发表于 2024-11-14 10:33
请查看附件
应该是反序列化的方式影响了,尝试将JSON数据字符串化后再在反序列化时解析,如下图所示:


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


Wilson.Zhang 发表于 2024-11-12 08:40:31

您好!setColumnWidth是Worksheet用以设置列宽的接口,只对调用者Worksheet有效,您提到的“多个sheet组合在一起”是指将多个sheet的内容复制粘贴至一个单独的sheet中吗?

石大正信 发表于 2024-11-12 08:45:10

sheet是单独的
sheet.setColumnWidth(0, 150.0, GC.Spread.Sheets.SheetArea.viewport)
这种情况是将所有sheet的0列都调整为150吧?我想只调一个

Wilson.Zhang 发表于 2024-11-12 11:20:33

石大正信 发表于 2024-11-12 08:45
sheet是单独的
sheet.setColumnWidth(0, 150.0, GC.Spread.Sheets.SheetArea.viewport)
这种情况是将所 ...

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


您可以对比动图中的测试场景是否与您的业务场景中“多个sheet组合在一起”一致,如不一致,需要介绍下“组合sheet”的方式,以及您使用的版本号。

石大正信 发表于 2024-11-12 14:10:40

最终目的是导出PDF文件,将多个调整好宽度和高度的sheet,用mySpread.toJSON({ includeBindingSource: true })导出,用addSheet增加到同一个spread中,只有第一个sheet的格式是正确的,其他都又变化。如果单独导出都符合我调整的格式。

石大正信 发表于 2024-11-12 14:14:43

和模板是否有关系,我是调用的同一个模板,感觉是按最后一次调整的格式

石大正信 发表于 2024-11-12 14:37:29

是模板的原因,调整一个,其他的也跟着变,这种场景,怎么处理

Wilson.Zhang 发表于 2024-11-12 17:35:23

石大正信 发表于 2024-11-12 14:37
是模板的原因,调整一个,其他的也跟着变,这种场景,怎么处理

请问您说的”模板“是最终导出的粘贴了不同sheet的Workbook吗?

石大正信 发表于 2024-11-12 21:03:16

设计器设计的,后缀是.ssjson的文件
页: [1] 2
查看完整版本: setColumnWidth只设置当前sheet