首页 > 解决方案 > 将来自 JSReport 的 html-to-xlsx 配方响应呈现为可下载的 Excel 表

问题描述

我的数据库中有患者数据以 HTML 表示,我想使用 JSReport 将其打印为 Excel 表格。但是,当我从 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 到 xlsx 响应

在此处输入图像描述

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

谢谢。

标签: javascriptnode.jsjsreport

解决方案


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)

推荐阅读