【问题标题】:Load SpreadJS using jsdom and nodeJS使用 jsdom 和 nodeJS 加载 SpreadJS
【发布时间】:2018-09-18 04:38:33
【问题描述】:

我正在尝试使用 Jsdom 加载 SpreadJS,但它给出了错误:需要一个完全支持 HTML5 Canvas 的浏览器来运行 SpreadJS

正如 jsom doc 所说,它支持画布。

我已经为 jsom 安装了canvas-prebuilt

这是我到目前为止所做的代码:

index.js

const jsdom = require("jsdom");
const { JSDOM } = jsdom;

const options = {
    resources: 'usable',
    runScripts: 'dangerously',
};

JSDOM.fromFile('index.html', options).then((dom) => {
    setTimeout(() => {
        console.log(dom.window.document.body.textContent.trim());
    }, 1000);
});

index.html

<!DOCTYPE html>
<html>
<head>
    <title>SpreadJS ExcelIO</title>
    <script src="libs/jquery-2.1.3.min.js" type="text/javascript"></script>
    <script src="libs/jquery-ui.min.js" type="text/javascript"></script>
    <link href="libs/gc.spread.sheets.excel2013white.10.1.0.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="libs/gc.spread.sheets.all.10.1.0.min.js"></script>
    <script type="text/javascript" src="libs/gc.spread.excelio.10.1.0.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var workbook = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
            var worksheet = workbook.getActiveSheet();
            worksheet.getCell(3,3).value("SpreadJS");
            worksheet.getCell(5,5).value("SpreadJS");
            worksheet.getCell(7,7).value("SpreadJS");
        });
    </script>
</head>
<body>
    <div id="ss" style="height:600px ; width :100%; ">sss</div>
</body>
</html>

我们将非常感谢您的帮助。

【问题讨论】:

    标签: javascript node.js jsdom spreadjs grapecity


    【解决方案1】:

    您应该能够稍微更改代码以获取 Spread 对象或其中的信息。

    index.html:

     $(document).ready(function () {
            var workbook = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
            var worksheet = workbook.getActiveSheet();
            worksheet.getCell(3,3).value("SpreadJS");
            worksheet.getCell(5,5).value("SpreadJS");
            worksheet.getCell(7,7).value("SpreadJS");
            window.workbook = workbook;
        });
    

    index.js:

    JSDOM.fromFile('index.html', options).then((dom) => {
    setTimeout(() => {
        console.log(dom.window.workbook.getActiveSheet().getCell(3,3).value());
    }, 1000);
    

    【讨论】:

    • 无法在dom.window 中获取workbook 对象。出现此错误无法读取未定义的属性“getActiveSheet”
    • 您需要使用 canvas 包,因为 SpreadJS 使用的是 canvas。 npmjs.com/package/canvas
    猜你喜欢
    • 1970-01-01
    • 2012-02-09
    • 2012-02-07
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多