首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用spreadjs库快速有效地加载大量的电子表格?

如何使用spreadjs库快速有效地加载大量的电子表格?
EN

Stack Overflow用户
提问于 2019-11-16 23:10:16
回答 1查看 776关注 0票数 0

我使用spreadjs和ExcelIO来显示一个包含100多张工作表的大型文件。我必须在我的excel视图UI上显示所有这些工作表。我可以展示它,但这需要超过3分钟的时间来加载UI上的所有工作表。我有一个约束,必须在一分钟内加载至少几张图纸,其余的图纸我可以在图纸更改事件上加载/绘制。如何仅使用spreadjs来实现这一点?

这是我目前用来加载的源代码。

代码语言:javascript
复制
excelIo.open(blob, function (json) {
    spread.suspendPaint();
    var workbookObj = json;
    spread.fromJSON(workbookObj);
    spread.resumePaint();
}
EN

回答 1

Stack Overflow用户

发布于 2019-11-26 05:45:11

我在GrapeCity工作,是他们支持SpreadJS的技术接洽工程师之一。要执行您所描述的操作,必须在加载工作簿后加载工作表,下面的示例显示了如何执行此操作。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>

    <meta charset="utf-8" />
    <title></title>

    <link href="http://cdn.grapecity.com/spreadjs/hosted/css/gc.spread.sheets.excel2013white.12.0.7.css" rel="stylesheet" type="text/css" />

    <script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/hosted/scripts/gc.spread.sheets.all.12.0.7.min.js"></script>
    <script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/hosted/scripts/interop/gc.spread.excelio.12.0.7.min.js"></script>

    <script type="text/javascript">

        var spread = null;
        window.onload = function() {
            spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
        }

        var excelIO = new GC.Spread.Excel.IO();
        var s = null;
        var sheets = null;

        function loadFile () {                
            s = new Date().getTime();
            var excelFile = document.getElementById("fileDemo").files[0];
            if (!excelFile) {
                console.log('please pick a file ......');
                return;
            }
            console.log('loading workbook ... ' + excelFile.name);                    

            excelIO.open(excelFile, function (json) {
                spread.suspendPaint();
                sheets = json.sheets;
                json.sheets = {};
                for (var sheetName in sheets) {
                    if (sheets.hasOwnProperty(sheetName)) {
                        var sheetJSON = sheets[sheetName];
                        json.sheets[sheetName] = {name: sheetName, columnCount: sheetJSON.columnCount, rowCount: sheetJSON.rowCount};
                    }
                }

                spread.fromJSON(json, {doNotRecalculateAfterLoad:true});
                spread.resumePaint();
            });            
        }

        function loadSheet() {
            var sheet = spread.getActiveSheet();
            loadSheetFromJSON(sheet.name());
        }

        function loadSheetFromJSON(sheetName) {            
            var sheet = spread.sheets.find(function(s){ return s.name() === sheetName});
            if (sheet) {
                spread.suspendPaint();
                sheet.fromJSON(sheets[sheet.name()]);
                spread.resumePaint();
            }
        }
    </script>
</head>
<body>
    <div id="ss" style="width:100%;height:600px;border:1px solid grey"></div>

    <div id="msg" style="width:100%;height:100px; margin-top: 10px; margin-bottom: 10px; border:1px solid gray"></div>


    <input type="file" name="files[]" id="fileDemo" accept=".xlsx,.xlsm" />
    <input type="button" id="button1" value="Import Excel" onclick="loadFile()" />
    <input type="button" id="btnCalc" value="Load Sheet" onclick="loadSheet()" />
</body>
</html>

如果您有任何其他问题,请随时联系葡萄城网站here上的SpreadJS支持团队

最好的,麦肯齐

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58892093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档