Для реализации данного процесса нам понадобится библиотека 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