Загрузите SpreadJS, используя jsdom и nodeJS

Я пытаюсь загрузить SpreadJS с помощью Jsdom, но выдает ошибку: нужен браузер, который полностью поддерживает HTML5 Canvas для запуска SpreadJS.

Где jsom doc говорит, что поддерживает холст.

Я установил canvas-prebuilt для jsom.

Это код, который я сделал до сих пор:

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>

Ваша помощь будет высоко оценена.


person Saurabh Agrawal    schedule 18.09.2018    source источник


Ответы (1)


Вы должны иметь возможность немного изменить код, чтобы получить объект Spread или информацию в нем.

индекс.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);
person AlexR    schedule 19.09.2018
comment
Не удалось получить объект workbook в dom.window.. Получение этой ошибки Невозможно прочитать свойство getActiveSheet неопределенного - person Saurabh Agrawal; 20.09.2018
comment
Вам нужно будет использовать пакет canvas, так как SpreadJS использует canvas. npmjs.com/package/canvas - person AlexR; 28.09.2018