簡體   English   中英

如何設置 Node.JS 以從電子表格中提取數據

[英]How to I set up Node.JS to pull data from a spreadsheet

我嘗試開發一個 Node.JS 腳本,該腳本從電子表格中提取數據以在腳本中使用。

我的腳本是這樣開始的:

var webdriverio = require('webdriverio');
var Excel = require('exceljs');
var testData = require('xlsx-extract');
//var Excel = require ('xlsx-style')
var options = {
    desiredCapabilities: {
        //browserName: 'phantomjs'
        browserName: 'chrome'
    }
};

var count = (1);
var testDate = new Date();
var Login = ('#button.mb24.secondary.wide')
var workbook = new Excel.Workbook();
workbook.xlsx.readFile('Myspreadsheet_v1.xlsx')
    .then(function() {
        getCell('A2').value
        console.log('url is: ' + getCell('A2').value);
    });

//var workbook = new Excel.Workbook();
//stream.pipe(workbook.xlsx.createInputStream('./Myspreadsheet_v1.xlsx'));

var worksheet = workbook.getWorksheet(1);
var sfurl = worksheet.getCell('A2').value;
var loginName = worksheet.getCell('B2').value;
var loginPassword = worksheet.getCell('C2').value;

但是,當我嘗試運行它時出現錯誤:

xxxxxxx/xxxxxxx/xxxxx.js:32
var sfurl = worksheet.getCell('A2').value;
                     ^

TypeError: Cannot read property 'getCell' of undefined
    at Object.<anonymous> (xxxxxxx/xxxxxxx/xxxxx.js:32:22)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3

我真的不知道我做錯了什么以及如何解決它。 我安裝了 NPM,也安裝了 node-xlxs 和 node-exceljs。 我的系統上安裝了 NodeJS。

我使用這些鏈接來嘗試開始:

https://www.npmjs.com/package/xlsx
https://www.npmjs.com/package/exceljs

你的代碼var worksheet = workbook.getWorksheet(1); 和超越應該在里面then(function() { /* here */ }因為 readFile 函數是一個異步過程。

當文件尚未讀取時,您正在嘗試讀取工作表。

關於承諾的一些信息。

函數readFile是異步的,這意味着節點將告訴您的系統加載文件並在此期間繼續執行其余代碼。 當系統讀取文件時,它將解析將在您的.then(...)函數中執行代碼的承諾。

這意味着當您到達getCell ,工作簿甚至還不可用。 將這部分移到.then(...)函數中,它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM