我在使用SheetJS解析“ 。xlsx”或“。xls”文件时遇到问题(npm上为“ xlsx”),我不知道自己在做什么错,但我总是得到相同的输出
[
{
"__EMPTY": "i"
},
{
"__EMPTY":"«Z.7¦§dÞZµìe°
我在回送4中使用了空控制器,以防您识别语法,并且该问题似乎不是回送,因为我能够将文件保存在服务器上并毫无问题地打开它。] >
似乎xlsx模块由于某种原因无法解析我的文件,任何人都可以看一下,看看是否有问题吗?
这是我的代码:
import { inject } from '@loopback/context'; import { ParamsDictionary, RequestHandler } from 'express-serve-static-core'; import * as multer from "multer"; import { unlinkSync } from "fs"; import * as xlsx from "xlsx" import { requestBody, RestBindings, RequestBodyObject, post, Request, Response } from '@loopback/rest'; const MULTIPART_FORM_DATA: RequestBodyObject = { description: 'multipart/form-data value.', required: true, content: { 'multipart/form-data': { // Skip body parsing 'x-parser': 'stream', schema: { type: 'object' }, }, }, } export class TemplateActionsController { constructor() { } @post('/parse-template', { responses: { 200: { content: { 'multipart/form-data': { schema: { type: 'object', }, }, }, description: '', }, }, }) async parseTemplate( @requestBody(MULTIPART_FORM_DATA) request: Request, @inject(RestBindings.Http.RESPONSE) response: Response, ): Promise<object> { //const storage = multer.memoryStorage(); const storage = multer.diskStorage({ filename: (req: Request<ParamsDictionary>, file: Express.Multer.File, callback: (error: Error | null, filename: string) => void) => { callback(null, file.originalname); } }); const upload = multer.default({ storage }); return new Promise<object>((resolve, reject) => { let middleware: RequestHandler<ParamsDictionary> = upload.any(); console.log('----------------------------------------------------------'); //console.log(request); middleware(request as any, response as any, (err: any) => { if (err) return reject(err); let arrFiles: Express.Multer.File[]; arrFiles = (request as Express.Request).files as Express.Multer.File[]; console.log('----------------------------------------------------------'); console.log(arrFiles[0]); let workbook: xlsx.WorkBook = xlsx.read(arrFiles[0].path); var sheet_name_list: string[] = workbook.SheetNames; let firstSheet: xlsx.WorkSheet = workbook.Sheets[sheet_name_list[0]] let strResult: any = xlsx.utils.sheet_to_json(firstSheet); console.log('----------------------------------------------------------'); console.log(sheet_name_list); console.log('----------------------------------------------------------'); console.log(strResult); try { unlinkSync(arrFiles[0].path); } catch (e) { //error deleting the file } resolve(strResult); }); }); } }
解析文件的行就是这个:
let strResult: any = xlsx.utils.sheet_to_json(firstSheet);
我的输入excel文件(template.xlsx)在第一张纸中只有简单的数据:
我在任何地方都找不到其他看起来像这样的问题。
[如果有人可以帮助,请告诉我。非常感激。奥马尔
我在使用SheetJS解析“ .xlsx”或“ .xls”文件时遇到问题(npm上为“ xlsx”,我不知道自己在做什么错,但是我总是得到相同的输出[[ “ __EMPTY”:“ i”},{“ __EMPTY”:“«Z.7¦ ...
似乎我正在使用: