量角器:xlsx-template 错误无法读取未定义的属性“长度”
我正在使用 xlsx-template 基于我创建的自定义模板生成 Excel 文件。但是,在使用模板创建新的 excel 文件时出现错误
以下是错误:
E/launcher - Cannot read property 'length' of undefined
E/launcher - TypeError: Cannot read property 'length' of undefined at Workbook.module.exports.Workbook.loadSheet (E:\latest-code\latest\test automation\node_modules\xlsx-template\lib\index.js:373:38) at Workbook.module.exports.Workbook.substitute (E:\latest-code\latest\test automation\node_modules\xlsx-template\lib\index.js:123:26) at E:\latest-code\latest\test automation\config\index.js:117:16 at FSReqWrap.readFileAfterClose [as oncomplete] (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-template 的任何其他配置。请建议如何摆脱此错误,因为我无法解决它。
提前致谢。
您确定
fs.readFile
找到了文件吗?
当您使用
template.substitute
时,第一个参数是工作表编号。
如果未找到工作表,错误
TypeError:无法读取 Workbook.module.exports.Workbook.loadSheet
中未定义的属性“length”......
fs.readFile
的回调中的
err
中有什么?
是的。
我认为您的问题来自
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.
我发现我安装的 xlsx-template 存在问题。实际上,在 xlsx-template index.js 文件的 loadSheet 方法中,我在 for 循环中使用了
i < self.sheet.length
,而实际上应该是
i < self.sheets.length
。我再次安装了 xlsx-template,现在它运行正常。
非常感谢大家的大力帮助:)