找回密码
 立即注册

QQ登录

只需一步,快速开始

jiankeyan

中级会员

98

主题

268

帖子

794

积分

中级会员

积分
794
jiankeyan
中级会员   /  发表于:2021-3-31 11:28  /   查看:3514  /  回复:10
image.png926765136.png
请问这种情况为什么发生,怎么解决

json.ssjson

94.92 KB, 下载次数: 43

10 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-31 11:54:08
沙发
我这边在14.0.9是正常获取的,麻烦您提供更多能复现问题的信息
image.png701712951.png
回复 使用道具 举报
jiankeyan
中级会员   /  发表于:2021-3-31 15:45:34
板凳
我这儿还是不行,是这样的。我们现在的需求是让这个表格的大小适应到整个div的大小。下面是代码:function zoom_excel() {
    var sheet = spread.getActiveSheet();
    var div = document.getElementById('ss');
    var divWidth = div.clientWidth || div.offsetWidth || div.scrollWidth;
    var divHeight = div.clientHeight || div.offsetHeight || div.scrollHeight;
    var colCount = sheet.getColumnCount();
    var rowCount = sheet.getRowCount();
    var sheetWidth = 0 ;
    var sheetHeight = 0 ;
    for (var i = 0; i < colCount; i++) {
        var span = sheet.getSpan(0,  i);
        var currentCount = 1;
        if (span != null) {
            currentCount = span.colCount;
        }
        var rectWidth = sheet.getCellRect(0, i).width;
        if (rectWidth != null) {
            sheetWidth += rectWidth;
        } else {
            sheetWidth += sheet.getColumnWidth(0, i);
        }

        i += (currentCount - 1);
    }
    for (var i = 0; i < rowCount; i++) {
        var span = sheet.getSpan(i,  0);
        var currentCount = 1;
        if (span != null) {
            currentCount = span.rowCount;
        }
        var rectHeight = sheet.getCellRect(i, 0).height;
        if (rectHeight != null) {
            sheetHeight += rectHeight;
        } else {
            sheetHeight += sheet.getRowHeight(i,0);
        }
        i += (currentCount - 1);
    }
    if (sheetHeight > sheetWidth) {
        sheet.zoom((divWidth-30) / sheetWidth);
    } else {
        sheet.zoom((divHeight-30) / sheetHeight);
    }
}

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-31 17:10:58
地板
本帖最后由 DerrickJiao 于 2021-4-1 09:24 编辑
jiankeyan 发表于 2021-3-31 15:45
我这儿还是不行,是这样的。我们现在的需求是让这个表格的大小适应到整个div的大小。下面是代码:function  ...

这边问题已经复现,需要做进一步调研,此贴为您改为保留处理,有进展会在本帖更新。(SJS-8169)
————————————————————————————————————————
经调研,getCellRect必须要求单元格在视图区域,getCellRect会根据SpreadJS宿主的位置返回屏幕上的实际物理坐标。


单元格A32之所以返回的是undefined是因为他已经超出视图区域了,也就是在显示范围外了。


同样,单元格A31也是超出了视图区域,而单元格A31之所以能获取到值是因为有一个合并单元格从[1,0]到[30,0],这个合并单元格是在视图区域的,因此能返回单元格的值。


因此,要想获得单元格的宽高,建议您遍历行列去获取对应的宽高。
回复 使用道具 举报
jiankeyan
中级会员   /  发表于:2021-4-1 11:11:22
5#
如果用getcolumnwidth会有一个问题,就是所加的总和是小于实际宽度的
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-1 12:29:45
6#
jiankeyan 发表于 2021-4-1 11:11
如果用getcolumnwidth会有一个问题,就是所加的总和是小于实际宽度的

一般来说,接口获取的值求和不会小与实际值,这个需要看实际的用例。如果是按照您的说的小于实际值,小的是一个固定值或者是稳定区间,可以加上这个值或者区间达到实际值。
回复 使用道具 举报
jiankeyan
中级会员   /  发表于:2021-4-1 13:17:47
7#
因为单元格越多少的越多,我在想是不是少一个框线的宽度
回复 使用道具 举报
jiankeyan
中级会员   /  发表于:2021-4-1 13:18:25
8#
每个单元格之间都有一个分割线
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-1 13:39:07
9#
jiankeyan 发表于 2021-4-1 13:18
每个单元格之间都有一个分割线

您可以尝试将网格线的宽度(每条网格线宽度1px)加上
回复 使用道具 举报
jiankeyan
中级会员   /  发表于:2021-4-1 13:55:59
10#
好吧,但是由于分辨率不同框线的宽度也在动态的变化,所以这个问题没有一个完美的解决方案吗
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部