将来自 JSReport 的 html-to-xlsx 配方响应呈现为可下载的 excel sheet

Rendering html-to-xlsx recipe response from JSReport into a downloadable excel sheet

我的数据库中有 HTML 表示的患者数据,我想使用 JSReport 将其打印为 excel sheet。但是,当我从 jsreport 服务器获得带有配方的响应时,它显示为乱码,我找不到将其呈现到 excel 文件中的方法。

虚拟示例

const axios = require("axios");

const url = "http://localhost:5488/api/report/";

const data = {
  "template": {
      "shortid": "2_Kw0BRuOm",
      "recipe": "html-to-xlsx",
      "data": {
          "people": [
              {
                  "name": "Omar rafat",
                  "age": "20",
                  "job": "Software Engineer"
              }
          ]
      }
  }
}

axios.post(url, {
  "template": {
      "shortid": "2_Kw0BRuOm",
      "recipe": "html-to-xlsx",
      "data": {
          "people": [
              {
                  "name": "Omar rafat",
                  "age": "20",
                  "job": "Software Engineer"
              }
          ]
      },
      "options": { "reports": { "save": true } }
  }
}).then(res => console.log(res.data)).catch(err => console.log(err));

原始 html-to-xlsx 响应

由于我对技术工作原理的误解,我可能错过了图书馆的使用,但我真的希望你们中的一些人能指导我正确实施它。

谢谢。

jsreport 有你可以使用的 nodejs 客户端 https://jsreport.net/learn/nodejs-client

您可以查看以下示例,了解如何呈现模板并将输出存储到文件中。

const client = require('jsreport-client')('http://localhost:5488')
const fs = require('fs').promises


async function render () {
  const res = await client.render({
    template: { shortid: '2_Kw0BRuOm' },
    data: { someText: 'world!!' }
  })

  const responseBuffer = await res.body()
  await fs.writeFile('out.xlsx', responseBuffer)
}

render().catch(console.error)