我想用js读取本地excel中B,C两列的数值
浏览器打开测试的代码,我把读取出来的值赋给k和j,打印出来,可以显示数值,但最后总会报错,想问下大家,这个报错得怎么把它消除掉
下面是我测试的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<input type="file" name="file1" id="1" onchange="readWorkbookFromLocalFile(this)" style="display: none" />
<input type="button" value="添加文件" onclick="document.getElementById(1).click();" />
</head>
<body>
<script type="text/javascript" src="../xlsx.core.min.js"></script>
<script>
function readWorkbookFromLocalFile(obj) {
var f = obj.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var data = e.target.result;
var workbook = XLSX.read(data, { type: 'binary' });
var sheetNames = workbook.SheetNames; // 工作表名称集合
sheetNames.forEach(name => {
var worksheet = workbook.Sheets[name]; // 只能通过工作表名称来获取指定工作表
// v代表读取单元格的原始值
for (i = 3; i < 20; i++) {
var k = worksheet['B' + i].v;
var j = worksheet['C' + i].v;
console.log(k, j);
}
});
};
reader.readAsBinaryString(f);
//console.log(workbook);
}
</script>
</body>
</html>
循环内获取v的值之前要先做空值判断。
// v代表读取单元格的原始值
for (i = 3; i < 20; i++) {
var cellB = worksheet['B' + i];
var k = cellB ? cellB.v : '';
var cellC = worksheet['C' + i];
var j = cellC ? cellC.v : "";
console.log(k, j);
}
另外你可以看看worksheet的结构是什么样子的
我看到你的问题才知道这个插件的,所以我没有看过文档,但是它的github上是有一些介绍的,供参考
https://github.com/SheetJS/sheetjs