Skip to content

XLSX 表格操作

简介

TIP

  • XLSX 是一个用于处理 XLSX 文件的库,它提供了许多功能,如读取、写入、修改和操作 XLSX 文件。
  • xlsx 可以在 Node.js 和浏览器中使用,并且支持多种格式,如 CSV、JSON、XML 等。
  • xlsx npm

安装

bash
npm install xlsx

读取 XLSX 文件

typescript
import * as XLSX from 'xlsx/xlsx.mjs';
// 读取本地excel文件
export const redXLSXFile = async (file: File) => {
  return await new Promise(async (resolve, reject) => {
    try {
      const data = await file.arrayBuffer();
      const workbook = XLSX.read(data);
      const sheetName = workbook.SheetNames[0];
      const worksheet = workbook.Sheets[sheetName];
      // 将工作表转换为JSON格式 header:1 输出格式  ,range:1表示从第二行开始读取数据
      const jsonData = XLSX.utils.sheet_to_json(worksheet,{header:1,range:1});
      console.log("redXLSXFile",jsonData);
      resolve(jsonData);
    } catch (error) {
      console.error('Error reading XLSX file:', error);
      reject(error);
    }
  });
}

错误处理

javascript
Error: Cannot read properties of undefined (reading 'read') at FileReader.read

直接将import XLSX from 'xlsx'改为import * as XLSX from 'xlsx/xlsx.mjs'即可

JSON输出格式

一般我们设置 header:1 range:1 这样可以直接读取格式为数组,并且忽略表头

abc
123
456
javascript

// XLSX.utils.sheet_to_json() 方法可以将工作表转换为 JSON 格式的数据。
// 当不设置header:1时,导出数据格式为:
[
    {
        "a": 1,
        "b": 2,
        "c": 3
    },
    {
        "a": 4,
        "b": 5,
        "c": 6
    }
]
// 当设置header:1时,导出数据格式为:
[['a', 'b', 'c'],[1, 2, 3],[4, 5, 6]]

无法找到模块“xlsx/xlsx.mjs”的声明文件

解决方法:在项目根目录下创建一个 xlsx.d.ts 文件,内容如下:

typescript
declare module 'xlsx/xlsx.mjs' {
  import * as XLSX from 'xlsx';
  export = XLSX;
}

杨利伟的博客