Javascript 量角器:xlsx模板错误无法读取属性';长度';未定义的

Javascript 量角器:xlsx模板错误无法读取属性';长度';未定义的,javascript,node.js,excel,protractor,Javascript,Node.js,Excel,Protractor,我使用xlsx模板生成Excel文件的基础上自定义模板,我已经创建。但我在用模板创建新excel文件时出错 下面是错误: var XlsxTemplate = require('xlsx-template'), fs = require('fs'), path = require('path'); describe("excel", function() { it("excel file", function() {

我使用xlsx模板生成Excel文件的基础上自定义模板,我已经创建。但我在用模板创建新excel文件时出错

下面是错误:

 var XlsxTemplate = require('xlsx-template'),
      fs = require('fs'),
      path = require('path');

        describe("excel", function() {

          it("excel file", function() {
            console.log('inside after each...');
            console.log(__dirname);
            fs.readFile(path.join(__dirname, 'Template.xlsx'), function(err, data) {

              var template = new XlsxTemplate(data);
              var values = {
                testcase: [{
                  id: 1,
                  name: "login",
                  status: "pass"
                }, {
                  id: 2,
                  name: "logout",
                  status: "fail"
                }, {
                  id: 3,
                  name: "searchbox",
                  status: "pass"
                }]
              }
              console.log(values);
              template.substitute(1, values);

              console.log('excel data');

              var newData = template.generate();

              fs.writeFileSync('test1.xlsx', newData, 'binary');
            });
          })
E/launcher-无法读取未定义的属性“length”

E/launcher-TypeError:无法读取未定义的属性“length” 位于Workbook.module.exports.Workbook.loadSheet(E:\latest code\latest\test automation\node\u modules\xlsx template\lib\index.js:373:38) 位于Workbook.module.exports.Workbook.substitute(E:\latest code\latest\test automation\node\u modules\xlsx template\lib\index.js:123:26) 在E:\latest code\latest\test automation\config\index.js:117:16 在FSReqWrap.readFileAfterClose[完成时](fs.js:416:3)

代码片段:

 var XlsxTemplate = require('xlsx-template'),
      fs = require('fs'),
      path = require('path');

        describe("excel", function() {

          it("excel file", function() {
            console.log('inside after each...');
            console.log(__dirname);
            fs.readFile(path.join(__dirname, 'Template.xlsx'), function(err, data) {

              var template = new XlsxTemplate(data);
              var values = {
                testcase: [{
                  id: 1,
                  name: "login",
                  status: "pass"
                }, {
                  id: 2,
                  name: "logout",
                  status: "fail"
                }, {
                  id: 3,
                  name: "searchbox",
                  status: "pass"
                }]
              }
              console.log(values);
              template.substitute(1, values);

              console.log('excel data');

              var newData = template.generate();

              fs.writeFileSync('test1.xlsx', newData, 'binary');
            });
          })
我是否缺少xlsx模板的任何其他配置。请建议如何摆脱这个错误,因为我无法解决它


提前谢谢

我认为你的问题来自
newData

Template.generate
不返回二进制数据

NodeJs
上,您可以使用:

var tplt = template.generate();
var binaryTplt = new Buffer(tplt, 'binary');
fs.writeFile(fileName, binaryTplt, function (err) {
  if (err) return console.log(err);
  console.log('XLS file saved : ' + fileName);
});
希望它能帮助你


Y.

您确定
fs.readFile
找到了该文件吗?
使用
模板。替换时,第一个参数是页码。
如果未找到工作表,则错误
TypeError:无法读取工作簿.module.exports.Workbook.loadSheet中未定义的属性“length”
appends…

fs.readFile
的回调中,
err
有什么内容?


Y.

发现我安装的xlsx模板存在问题。实际上,在xlsx template index.js文件的loadSheet方法中,我在for循环中有
I
I
。我再次安装了xlsx模板,现在工作正常


谢谢大家的大力帮助:)

大家好。。。谢谢你的帮助。提前感谢:)谢谢你的回复。实际上,我在
模板上遇到了这个错误。替换(1,值)
。我们还可以从错误中看到,它在
Workbook.module.exports.Workbook.substitute(E:\latest code\latest\test automation\node\u modules\xlsx template\lib\index.js:123:26)处给我错误