javascript - 如何从 Excel 中读取 A 列数据

标签 javascript node.js excel

我试图从nodejs中的excel中获取给定列的数据(例如,“电子邮件”列),处理数据,然后将结果导出到同一个excel中名为“电子邮件”的新列中-结果”。

这是我尝试获取数据的方法:

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(worksheet).find(key=> worksheet[key].v === address_of_cell);

通过传递“电子邮件”并搜索要解析的单元格名称来查找名称。

这会起作用:

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)

关于javascript - 如何从 Excel 中读取 A 列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64592542/

相关文章:

javascript - 如何找出我的页面在 Chrome 中崩溃的原因

javascript - 如何在开始时在 Javascript 对象中添加键/值对

javascript - 在 DD-MM-YY-23 :59:42 format 中获取 NodeJS 中的当前时间戳

node.js - 为什么我在云函数中使用不同的 Node 运行时版本?

javascript - console.log 如何确定打印对象时要打印哪些属性?

javascript - 清除/停止javascript中的滚动惯性?

javascript - 来自 API 的 2 个并发请求数据混淆

JavaScript:当 Excel 数据从 Asterisk 开始时如何终止 Asterisk

excel - VBA-MouseMove 打开和关闭另一个用户窗体

c++ - VC++创建多个Excel工作表