如何在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
相关产品推荐
相关产品推荐

