Преобразование HTML таблицы в Excel на NodeJS

Для реализации данного процесса нам понадобится библиотека html-to-excel (исходный код этого приложения на странице https://github.com/pofider/html-to-xlsx).

Создаем пустой каталог, например html2excel.

Внутри каталога создаем файл index.js:

const util = require('util')
const fs = require('fs')
const conversionFactory = require('html-to-xlsx')
const puppeteer = require('puppeteer')
const chromeEval = require('chrome-page-eval')({ puppeteer })
const writeFileAsync = util.promisify(fs.writeFile)
const path = require('path')


const conversion = conversionFactory({
  extract: async ({ html, ...restOptions }) => {
    const tmpHtmlPath = path.join(__dirname, 'input.html')

    await writeFileAsync(tmpHtmlPath, html)

    const result = await chromeEval({
      ...restOptions,
      html: tmpHtmlPath,
      scriptFn: conversionFactory.getScriptFn()
    })

    const tables = Array.isArray(result) ? result : [result]

    return tables.map((table) => ({
      name: table.name,
      getRows: async (rowCb) => {
        table.rows.forEach((row) => {
          rowCb(row)
        })
      },
      rowsCount: table.rows.length
    }))
  }
})

async function run () {
  const stream = await conversion(`<table><tr><td>cell value</td></tr></table>`)

  stream.pipe(fs.createWriteStream(path.join(__dirname, 'output.xlsx')))
}

run()

Далее выполняем команду npm init. После этого будет создан файл package.json.

В командной строек выполняем:

npm install html-to-xlsx
npm install puppeteer
npm install chrome-page-eval

Выполняем команду node index.js

В итоге должен быть сформирован файл output.xlsx

Пример проекта храниться в локальном репозитории:

git clone git://git.appcode.pw/html2excel.git
Print Friendly, PDF & Email

Добавить комментарий