简介
ls-xlsx 是一个 Node.js 模块,用于读取和处理 Excel 文档(.xlsx/.xls)。可以将 Excel 文件转换为 JSON 或 CSV 格式,帮助程序员轻松地处理表格数据。
本文将为大家详细介绍如何使用 ls-xlsx 包,从安装开始,到读取 Excel 文件并将数据转换为 JSON 或 CSV,同时还会介绍如何处理各种复杂情况。
安装
首先,打开终端并通过 npm 安装 ls-xlsx。
npm install ls-xlsx
安装完成后,你可以在项目的 package.json 文件中看到以下依赖:
{ "dependencies": { "ls-xlsx": "^1.0.0" } }
读取文件
接下来,我们需要使用 Node.js 的 fs 模块来读取 Excel 文件。在使用该模块前,先确保 Excel 文件已经被正确地存储在你的电脑上。
以下是使用 fs 模块来读取文件的示例代码:
const fs = require('fs'); const xlsx = require('ls-xlsx'); const workbook = xlsx.readFile(`${__dirname}/file.xlsx`); console.log(workbook);
这段代码首先引入 fs 和 ls-xlsx,然后通过 fs 的 readFile 方法读取位于项目根目录下的 file.xlsx 文件,并将其作为参数传递给 ls-xlsx 的 readFile 方法。
这时,我们会得到一个包含 Excel 数据的 JSON 对象。
转换 Excel 数据
接下来,我们将演示如何针对 Excel 中的数据进行转换,以便于后续处理。我们可以将其转换为 JSON 或 CSV 格式。
首先,我们需要获取工作簿中的第一张表格(也就是工作表)。我们可以使用以下代码:
const fs = require('fs'); const xlsx = require('ls-xlsx'); const workbook = xlsx.readFile(`${__dirname}/file.xlsx`); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; console.log(worksheet);
这段代码首先拿到工作簿中的第一张表格,然后将其打印到控制台上。
转换为 JSON
转换为 JSON 非常简单。我们只需要使用 xlsx.utils.sheet_to_json 方法并传递上面获取到的工作表对象。我们还可以选择性地传递参数,例如是否应将表头也包含在 JSON 对象中。以下是示例代码:
const fs = require('fs'); const xlsx = require('ls-xlsx'); const workbook = xlsx.readFile(`${__dirname}/file.xlsx`); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; const jsonData = xlsx.utils.sheet_to_json(worksheet, { header: 1 }); console.log(jsonData);
这段代码使用到了 xlsx.utils.sheet_to_json 方法,该方法将工作表对象作为第一个参数(即 worksheet),并使用可选的第二个参数来确定是否应将表头也包含在 JSON 对象中。在这个示例中,我们选择将表头包含在 JSON 对象中。
转换为 CSV
接下来,我们将演示如何将 Excel 数据转换为 CSV 格式。同样,我们只需要按以下方式调用 xlsx.utils.sheet_to_csv 方法:
const fs = require('fs'); const xlsx = require('ls-xlsx'); const workbook = xlsx.readFile(`${__dirname}/file.xlsx`); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; const csvData = xlsx.utils.sheet_to_csv(worksheet); console.log(csvData);
它接受工作表对象作为参数,返回 CSV 格式的数据。
处理复杂情况
在实际开发中,我们可能会遇到一些复杂的情况,例如需要读取 Excel 文件的特定单元格或特定范围的单元格。ls-xlsx 为这些情况提供了内置的方法。
读取特定单元格数据
以下是如何读取特定单元格数据的示例代码:
const fs = require('fs'); const xlsx = require('ls-xlsx'); const workbook = xlsx.readFile(`${__dirname}/file.xlsx`); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; const cellAddress = 'B3'; const cellValue = worksheet[cellAddress]?.v; console.log(cellValue);
在这个示例中,我们使用工作簿中第一张工作表的数据,并使用指定的单元格位置“B3”读取该单元格的值。如果指定单元格没有值,则此示例还将打印出无法读取的“Undefined”内容。
读取范围内的单元格数据
以下是如何读取特定范围内单元格数据的示例代码:
const fs = require('fs'); const xlsx = require('ls-xlsx'); const workbook = xlsx.readFile(`${__dirname}/file.xlsx`); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; const range = { s: { c: 0, r: 1 }, e: { c: 2, r: 4 } }; const jsonRangeData = xlsx.utils.sheet_to_json(worksheet, { header: 1, range }); console.log(jsonRangeData);
在这个例子中,我们使用了给定矩阵的起始和结束行/列位置。工具包只会返回范围内的单元格数据,并将其组装成 JSON。
总结
在这篇文章中,我们详细地介绍了如何使用 ls-xlsx 包进行 Excel 文件转换和数据处理。我们学习了如何读取 Excel 文件,将其转换为 JSON 或 CSV 格式,并在最后讨论了如何处理各种复杂情况。现在,你应该已经掌握了如何使用 ls-xlsx 包,可以为你的项目添加如此强大的 Excel 数据处理功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601681e8991b448de30b