如何在NestJS中从第二行开始读取Excel文件?
在NestJS中实现从第二行读取Excel文件的简单方案
最直接的方式是借助xlsx库(处理Excel的常用轻量工具),通过内置配置跳过第一行,下面是具体实现步骤:
1. 安装依赖
npm install xlsx # 若处理上传文件,确保已安装相关依赖 npm install @nestjs/platform-express multer
2. 编写Excel读取服务
创建Service封装读取逻辑,支持本地文件和上传文件两种场景:
import { Injectable } from '@nestjs/common'; import * as XLSX from 'xlsx'; import { Express } from 'express'; @Injectable() export class ExcelService { // 读取本地Excel文件,从第二行开始 readLocalExcel(filePath: string): any[] { const workbook = XLSX.readFile(filePath); const targetSheet = workbook.Sheets[workbook.SheetNames[0]]; // 核心配置:skipHeader: true 直接跳过第一行表头 const readOptions = { header: 1, // 返回二维数组格式,也可设为'A'返回键值对对象 skipHeader: true, }; return XLSX.utils.sheet_to_json(targetSheet, readOptions); } // 处理上传的Excel文件(MultipartFile) readUploadedExcel(file: Express.Multer.File): any[] { const workbook = XLSX.read(file.buffer, { type: 'buffer' }); const targetSheet = workbook.Sheets[workbook.SheetNames[0]]; const readOptions = { header: 1, skipHeader: true, }; return XLSX.utils.sheet_to_json(targetSheet, readOptions); } }
3. 在控制器中调用服务
如果是处理文件上传,用FileInterceptor接收文件并调用服务:
import { Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; import { ExcelService } from './excel.service'; @Controller('excel') export class ExcelController { constructor(private readonly excelService: ExcelService) {} @Post('upload') @UseInterceptors(FileInterceptor('file')) handleFileUpload(@UploadedFile() file: Express.Multer.File) { const excelData = this.excelService.readUploadedExcel(file); return { data: excelData, message: '读取成功' }; } }
备选灵活方案(手动指定起始行)
如果需要更精细的行范围控制,可改用range参数(xlsx的行索引从0开始,range:1对应第二行):
const readOptions = { header: 1, range: 1, // 从第2行开始读取所有行 };
内容的提问来源于stack exchange,提问作者abdulAbarChabib
相关产品推荐
相关产品推荐

