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