找回密码
 立即注册

QQ登录

只需一步,快速开始

htkjtv

注册会员

13

主题

38

帖子

127

积分

注册会员

积分
127
htkjtv
注册会员   /  发表于:2024-9-20 16:14  /   查看:346  /  回复:5
本帖最后由 htkjtv 于 2024-9-20 16:16 编辑

workBookArray为工作表集合
var workBookArray = new Array();
for(var i=0;i<idArr.length;i++){var workbook = new GC.Spread.Sheets.Workbook(document.getElementById("wb"+i));
    workbook.fromJSON(res);
    workBookArray.push(workbook);
}
问题:
循环workBookArray集合批量导出excel
var excelIo = new GC.Spread.Excel.IO();
var serializationOption = {
    includeBindingSource: true, // include binding source when converting the workbook to json, default value is false
    //ignoreStyle: true, // ignore styles when converting workbook to json, default value is false
    //ignoreFormula: true, // ignore formulas when converting workbook to json, default value is false
saveAsView: true, //include the format string formatting result when converting workbook to json, default value is false
    //rowHeadersAsFrozenColumns: true, // treat row headers as frozen columns when converting workbook to json, default value is false
    //columnHeadersAsFrozenRows: true, // treat column headers as frozen rows when converting workbook to json, default value is false
includeAutoMergedCells: true // include the automatically merged cells to the real merged cells when converting the workbook to json.
}
for(var i=0; i<workBookArray.length; i++) {
    var spread = workBookArray[i];
    var json = JSON.stringify(spread.toJSON(serializationOption));var sheet = spread.getSheet(0);
    var fileName =sheet.getValue(1,1);
    console.log(fileName);   // 此处打印为每个表不同的内容
    excelIo.save(json, function (blob) {
        saveAs(blob, fileName + '.xlsx');  //但此处导出的都是最后一个
    }, function (e) {
        console.log(e);
    });}
结果导出的这些表都是集合中的最后一个表,导出一堆一样的表,如何解决?

5 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-9-20 17:44:17
沙发
您好!从您提供的代码片段来看,似乎正常,不过您需要排查下是否所有Workbook实例读入的时同一个json数据序列呢?如下图所示,res变量引用的值是否有变更呢?

1726825467059.png616000365.png
回复 使用道具 举报
htkjtv
注册会员   /  发表于:2024-9-23 08:08:19
板凳
本帖最后由 htkjtv 于 2024-9-23 08:09 编辑
Wilson.Zhang 发表于 2024-9-20 17:44
您好!从您提供的代码片段来看,似乎正常,不过您需要排查下是否所有Workbook实例读入的时同一个json数据序 ...

for(var i=0; i<workBookArray.length; i++) {
    var spread = workBookArray[i];
    var json = JSON.stringify(spread.toJSON(serializationOption));var sheet = spread.getSheet(0);
    var fileName =sheet.getValue(1,1);
    console.log(fileName);   // 此处打印为每个表不同的内容
    excelIo.save(json, function (blob) {
        saveAs(blob, fileName + '.xlsx');  //但此处导出的都是最后一个
    }, function (e) {
        console.log(e);
    });}
下方在循环中打印出来的为每个表不同的内容,但导出的却不是

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-23 08:52:29
地板

您好!需要您提供一个能够复现问题的完整demo,我们据此来分析产生问题的原因。
回复 使用道具 举报
htkjtv
注册会员   /  发表于:2024-9-23 10:13:42
5#
Wilson.Zhang 发表于 2024-9-23 08:52
您好!需要您提供一个能够复现问题的完整demo,我们据此来分析产生问题的原因。

spread.export(function (blob) {
            // 将blob保存为文件
            saveAs(blob, fileName);
        }, function (e) {
            console.log(e);
        }, {
            fileType: GC.Spread.Sheets.FileType.excel
        });
我自己解决了,换成这种方式就没有问题了
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-23 11:00:19
6#
htkjtv 发表于 2024-9-23 10:13
spread.export(function (blob) {
            // 将blob保存为文件
            saveAs(blob, fileNam ...

解决了就好,那就结贴了。如有问题,欢迎继续发帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部