找回密码
 立即注册

QQ登录

只需一步,快速开始

瑞雪
初级会员   /  发表于:2024-12-30 17:56  /   查看:27  /  回复:1
2金币
本帖最后由 瑞雪 于 2024-12-30 17:57 编辑

Spreadjs 动态循环导入多个excel ,怎么让所有excel工作簿都显示,不是将所有工作簿sheet合并到一个中,是各显示各的

image.png349164428.png
以下是我的代码
for (var i = 1; i <= viewModel.FileList.length; i++) {

    var spread = new GC.Spread.Sheets.Workbook(document.getElementById(printAreaId));
    var filePath = viewModel.OutputFileName[i - 1];
    var excelIo = new GC.Spread.Excel.IO();
    var excelFilePath = filePath;

    var xhr = new XMLHttpRequest();
    xhr.open('GET', excelFilePath, true);
    xhr.responseType = 'blob';
    xhr.onload = function (e) {
        if (this.status == 200) {
            // get binary data as a response
            var blob = this.response;
            // convert Excel to JSON
            excelIo.open(blob, function (json) {
                var workbookObj = json;
                spread.fromJSON(workbookObj);

                var sheets = spread.sheets;
                sheets.forEach(function (sheet) {
                    setPrintInfo(filePath, sheet);
                })

            }, function (e) {
                // process error
                alert(e.errorMessage);
            }, {});
        }
    };

    xhr.send();
}


这样显示F12会报错
image.png560590819.png

我只有将所有的变量都不重复才能显示
1:

        var spread = new GC.Spread.Sheets.Workbook(document.getElementById("printArea1"));
        var filePath = viewModel.OutputFileName[0];
        var excelIo = new GC.Spread.Excel.IO();
        var excelFilePath = filePath
        var xhr = new XMLHttpRequest();
        xhr.open('GET', excelFilePath, true);
        xhr.responseType = 'blob';
        xhr.onload = function (e) {
            if (this.status == 200) {
                // get binary data as a response
                var blob = this.response;
                // convert Excel to JSON
                excelIo.open(blob, function (json) {
                    var workbookObj = json;
                    spread.fromJSON(workbookObj);

                    var sheets = spread.sheets;
                    sheets.forEach(function (sheet) {
                        setPrintInfo(viewModel.OutputFileName[0], sheet);
                    })

                }, function (e) {
                    // process error
                    alert(e.errorMessage);
                }, {});
            }
        };

        xhr.send();
2:
            var spread2 = new GC.Spread.Sheets.Workbook(document.getElementById("printArea2"));
            $("#print2").css("display", "");
            $("#printArea2").css("display", "");
            if (excelCheck) {
                $("#save2").css("display", "");
            }
            var filePath2 = viewModel.OutputFileName[1];
            var excelIo2 = new GC.Spread.Excel.IO();
            var excelFilePath2 = filePath2;
            var xhr2 = new XMLHttpRequest();
            xhr2.open('GET', excelFilePath2, true);
            xhr2.responseType = 'blob';
            xhr2.onload = function (e) {
                if (this.status == 200) {
                    // get binary data as a response
                    var blob2 = this.response;
                    // convert Excel to JSON
                    excelIo2.open(blob2, function (json) {
                        var workbookObj = json;
                        spread2.fromJSON(workbookObj);
                        var sheets = spread2.sheets;
                        sheets.forEach(function (sheet) {
                            setPrintInfo(viewModel.OutputFileName[1], sheet);
                        })
                    }, function (e) {
                        // process error
                        alert(e.errorMessage);
                    }, {});
                }
            };

            xhr2.send();



image.png515876464.png

1 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:5 天前
沙发
您好,一个dom元素对应一个spread对象,所以您发出的第一段代码,多个SpreadJS对象都对应printAreaId,可能会导致问题。建议您在for循环中,区分dom对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部