找回密码
 立即注册

QQ登录

只需一步,快速开始

bigsun008
金牌服务用户   /  发表于:2024-3-12 11:44  /   查看:2306  /  回复:9
本帖最后由 Richard.Ma 于 2024-7-8 15:42 编辑

产品:SpreadJS
版本:V17.0.4
编号: SJS-23875

1、切片器
在线设置一样列宽的切片器,导出excel中不一样(有时导出结果中正常,excel也显示一致列宽,但不是每次导出都无该问题)
image.png76406859.png image.png369980773.png

2、区域快照
image.png22296446.png
excel中: image.png315266112.png

3、图片纵向压缩了
1)组件间有区域重叠时,会有内容覆盖的情况(临时解决方案:不把组件设置为纵向区域重叠)
image.png784706420.png
image.png283120116.png
2)含文字图片,因纵向压缩字体变形,缩放比例与在线有差异

image.png403818663.png 导出 image.png630169982.png
补充信息:此前提贴有反馈设置默认字体会影响缩放,但该文件的环境中未设置默认字体






导出pdf和excel差异问题模板.sjs.zip

9.71 MB, 阅读权限: 150, 下载次数: 1

9 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-12 18:16:38
沙发
问题1.目前观察到的是两个Week切片器在spreadjs中宽度相同,但是导出到xlsx后,宽度有一点误差。需要调查一下原因

问题2,是产品设计差异,spreadjs和excel在区域快照shape被缩放的时候,文字的缩放策略不同。
spreadjs会整体(横向纵向)缩放文字以保持文字纵横比,观察到的就是文字整体变小了
excel是仅在shape缩放的方向来缩放文字,在这里是仅缩小了宽度,高度没有变化

问题3,4看起来是和导出后图表和图片的纵横比发生了变化有关系。也需要先做调查。有新的进展会在帖子中更新
回复 使用道具 举报
bigsun008
金牌服务用户   /  发表于:2024-3-12 18:52:38
板凳
Richard.Ma 发表于 2024-3-12 18:16
问题1.目前观察到的是两个Week切片器在spreadjs中宽度相同,但是导出到xlsx后,宽度有一点误差。需要调查一 ...

辛苦
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-13 00:13:33
地板
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-14 12:16:20
5#
本帖最后由 Richard.Ma 于 2024-3-14 12:22 编辑

更新一下问题1调查的进展,
两个Week切片器在spreadjs中宽度相同,但是导出到xlsx后,宽度有一点误差

原因是两个切片器本身宽度就有微小差异,你这边两个切片器应该本身就是在excel中设计的,是精确到0.01厘米。在spreadjs加载这个模板后。实际切片器的宽高存储的也是转换为像素值,是浮点数而非整数。所以spreadjs存储的也没有问题。参考下图


由于spreadjs在设计上是使用像素为单位,所以在显示的时候,会显示整数的像素值。只有你在spreadjs中对这两个切片器的宽度做了修改,比如都修改为503,两个切片器的宽度才会相同

image.png83476561.png
image.png198434752.png




回复 使用道具 举报
bigsun008
金牌服务用户   /  发表于:2024-3-14 13:40:17
6#
本帖最后由 bigsun008 于 2024-3-14 13:41 编辑
Richard.Ma 发表于 2024-3-14 12:16
更新一下问题1调查的进展,

原因是两个切片器本身宽度就有微小差异,你这边两个切片器应该本身就是在exc ...

502也是通过spreadjs设置的,多出来的小数点后面是怎么出来的?我们不是在excel里设置的,切片器是通过spreadjs新建设置的,辛苦再排查一下
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-14 16:24:53
7#
你可以自己在spreadjs中测试,随便设置成其他的数字再设置回502,看看导出会不会还是不一样

设置的是502像素,最后存储的肯定就是502 ,不可能是存储了两个不同的小数
回复 使用道具 举报
bigsun008
金牌服务用户   /  发表于:2024-3-14 17:40:46
8#
Richard.Ma 发表于 2024-3-14 16:24
你可以自己在spreadjs中测试,随便设置成其他的数字再设置回502,看看导出会不会还是不一样

设置的是502 ...

这边推测问题的根源在这里,参见附件,看一下能不能优化一下

归档.zip

11.77 MB, 下载次数: 633

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-14 18:34:51
9#
收到
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-8 15:51:09
10#
经调查,问题的原因是是 endColumn 不同导致,这个是目前产品的设计或者说限制

image.png720293578.png

导出到 Excel 时 columnWidth 确实无法做到完全准确(pixel 到point转换时)
spreadjs绘图时,只能设置起始列和结束列以及偏移量来控制尺寸, 如果终点和起点之间的距离改变,切片器的宽度就会改变

你会看到虽然这个xlsx文件导出后结果不同,但是再次导入spreadjs后,显示的仍然是一致的,都是307

另外,如果将这 3 个切片器移到一列,则不会有这个问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部