You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中读取.xlsx文件并解析指定列数据?

在TypeScript中读取.xlsx文件并转换为指定JSON格式

依赖准备

先安装处理Excel的核心库及对应TypeScript类型定义:

npm install xlsx @types/xlsx

Node.js环境实现代码

以下代码可直接读取本地demo.xlsx文件,将其中的UserIds和Code列转换为目标JSON格式:

import * as XLSX from 'xlsx';
import * as fs from 'fs';

// 定义结果数据类型
interface UserCode {
  UserId: string;
  Code: string;
}

function convertXlsxToJson(filePath: string): UserCode[] {
  // 读取本地Excel文件的二进制数据
  const fileBuffer = fs.readFileSync(filePath);
  // 解析Excel文件
  const workbook = XLSX.read(fileBuffer, { type: 'buffer' });
  // 获取第一个工作表(默认数据存储在首个sheet)
  const firstSheetName = workbook.SheetNames[0];
  const worksheet = workbook.Sheets[firstSheetName];
  
  // 将工作表转换为原始JSON数组
  const rawData = XLSX.utils.sheet_to_json(worksheet) as Array<{ UserIds: string; Code: string }>;
  
  // 转换为目标格式:重命名列名+过滤空行
  return rawData
    .filter(item => item.UserIds && item.Code)
    .map(item => ({
      UserId: item.UserIds,
      Code: item.Code
    }));
}

// 调用示例
const result = convertXlsxToJson('./demo.xlsx');
console.log(JSON.stringify(result, null, 2));

浏览器环境适配(可选)

如果需要在浏览器中读取用户上传的.xlsx文件,可使用以下实现:

import * as XLSX from 'xlsx';

interface UserCode {
  UserId: string;
  Code: string;
}

async function handleUploadedFile(file: File): Promise<UserCode[]> {
  const arrayBuffer = await file.arrayBuffer();
  const workbook = XLSX.read(arrayBuffer, { type: 'array' });
  const firstSheetName = workbook.SheetNames[0];
  const worksheet = workbook.Sheets[firstSheetName];
  
  const rawData = XLSX.utils.sheet_to_json(worksheet) as Array<{ UserIds: string; Code: string }>;
  
  return rawData
    .filter(item => item.UserIds && item.Code)
    .map(item => ({
      UserId: item.UserIds,
      Code: item.Code
    }));
}

// 配合文件上传控件使用
document.querySelector('input[type="file"]')?.addEventListener('change', async (e) => {
  const file = (e.target as HTMLInputElement).files?.[0];
  if (!file) return;
  
  const result = await handleUploadedFile(file);
  console.log(result);
});

关键说明

  • 借助xlsx库完成Excel文件解析,支持多种输入格式(buffer、array等)
  • 通过sheet_to_json快速将工作表转为原始JSON结构,再通过map重命名列名(UserIds改为UserId)
  • 加入filter过滤空行,避免无效数据混入最终结果

内容的提问来源于stack exchange,提问作者Shubham Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:53:16