Javascript 如何从Excel中读取列A中的数据
我试图从nodejs中的excel中获取给定列的数据(例如,列“Emails”),处理数据,然后将结果导出到同一个excel中,新的列名为“Emails result” 这就是我通过获取数据所尝试的:Javascript 如何从Excel中读取列A中的数据,javascript,node.js,excel,Javascript,Node.js,Excel,我试图从nodejs中的excel中获取给定列的数据(例如,列“Emails”),处理数据,然后将结果导出到同一个excel中,新的列名为“Emails result” 这就是我通过获取数据所尝试的: const xlsx = require('xlsx'); const emails = []; var workbook = xlsx.readFile(`./view/assets/uploads/${filename}`);
const xlsx = require('xlsx');
const emails = [];
var workbook = xlsx.readFile(`./view/assets/uploads/${filename}`);
var first_sheet_name = workbook.SheetNames[0];
var address_of_cell = 'Emails';
var worksheet = workbook.Sheets[first_sheet_name];
var desired_cell = worksheet[address_of_cell];
emails.push(desired_cell.v);
console.log(emails);
但我得到了这个错误:
TypeError: Cannot read property 'v' of undefined
因此无法检索数据
另外,如何创建一个新列(如果不存在)并将结果添加到其中
有什么想法吗?你不能只传递字符串就期望得到该列,你必须找到你将要累加的单元格的名称
const columnName=Object.keys(工作表).find(key=>工作表[key].v==单元格的地址)代码>
通过传递“电子邮件”并搜索要解析的单元格名称来查找名称
这将有助于:
const xlsx = require('xlsx');
const emails = [];
var workbook = xlsx.readFile(`./view/assets/uploads/${filename}`);
var first_sheet_name = workbook.SheetNames[0];
var address_of_cell = 'Emails';
var worksheet = workbook.Sheets[first_sheet_name];
const columnName = Object.keys(worksheet).find(key=> worksheet[key].v === address_of_cell);
for (let key in worksheet) {
if (key.toString()[0] === columnName[0]) {
emails.push(worksheet[key].v);
}
}
console.log('Result list', emails)
同样,您可以不使用for-in循环,而是保持功能性,避免数组声明和工作表对象引用
const emails = Object.entries(worksheet)
.filter(([key, value]) => key.toString()[0] === columnName[0])
.map(([key, value]) => value.v)
仔细检查你的专栏邮件是否存在,可能是你拼错了,错误是找不到这样的单元格是的,该专栏存在并且拼写正确。应该还有其他errorconsole.log(所需的_单元格)并查看输出中的“未定义”内容