首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nodejs将json数据转换为excel文件

如何使用nodejs将json数据转换为excel文件
EN

Stack Overflow用户
提问于 2022-09-20 21:30:26
回答 1查看 174关注 0票数 0

我正试图获得以下数据的excel文件。但是,我的代码不起作用。有人知道吗,为什么?我没有得到任何结果或任何错误。它什么也做不了。此方法在控制器中。所以我从邮递员打电话给这个方法

代码语言:javascript
复制
import {Workbook} from  "exceljs";
import * as tmp from  "tmp";

    @Get()
    @Header("Content-Type", "text/xlsx")
    async getExcel(@Response() res) {

        let rows = []

        let data = [{name: "shelly", surname: "shelly"}, {name: "shelly1", surname: "shelly1"},]
          
          data(doc => {
            rows.push(Object.values(doc))
          })

          let book = new Workbook();
          let sheet = book.addWorksheet(`sheet1`);
          rows.unshift(Object.keys(data[0]));
          sheet.addRows(rows)

          
          let File = await new Promise((resolve,reject) =>{
            tmp.file({discardDescriptor: true, prefix: `ExcelSheet`, postfix:`.xlsx`, mode: parseInt(`0600`,8)}, async (err, file) =>{
                if(err)
                    throw new BadRequestException(err);
                
                book.xlsx.writeFile(file).then(_ =>{
                    resolve(file)
                }).catch(err => {
                    throw new BadRequestException(err)
                })
            })
          })


          res.download(`${File}`)
    }

在nestjs框架中使用nodejs。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-01 09:19:34

该代码基本上是有效的,并且工作正常。它有几个语法错误,仅此而已。

下面是与注释的语法错误相关的固定代码。

代码语言:javascript
复制
// Missing imports (possibly just not copy-pasted)
import { BadRequestException, Controller, Get, Header, Res } from "@nestjs/common";
import { Workbook } from "exceljs";
import * as tmp from "tmp";

@Controller('json-to-excel')
export class JsonToExcelController {
  @Get()
  @Header("Content-Type", "text/xlsx")
  // Decorator @Res is provided by Nest to describe Response, not @Response.
  async getExcel(@Res() res) {

    let rows = []

    let data = [{name: "shelly", surname: "shelly"}, {name: "shelly1", surname: "shelly1"},]

    // Array was called as a function. It has method 'forEach' to iterate.
    data.forEach(doc => {
      rows.push(Object.values(doc))
    })

    let book = new Workbook();
    let sheet = book.addWorksheet(`sheet1`);
    rows.unshift(Object.keys(data[0]));
    sheet.addRows(rows)


    let File = await new Promise((resolve,reject) =>{
      tmp.file({discardDescriptor: true, prefix: `ExcelSheet`, postfix:`.xlsx`, mode: parseInt(`0600`,8)}, async (err, file) =>{
        if(err)
          throw new BadRequestException(err);

        book.xlsx.writeFile(file).then(_ =>{
          resolve(file)
        }).catch(err => {
          throw new BadRequestException(err)
        })
      })
    })


    res.download(`${File}`)
  }
}

这就是问题所在吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73792855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档