最近在工作生活中遇到一个场景,需要根据Excel中的数据来动态生成一个Html页面,下面简要描述一下通过Node脚本实现方案。
Main:读取Excel+生成Html
读取Excel数据
需要安装node插件 node-xlsx
,该插件支持读写Excel
// 安装插件
npm install node-xlsx
读取数据
const xlsx = require('node-xlsx')
// excel文件类径
const excelFilePath = './excel.xlsx'
//解析excel, 获取到所有sheets
const sheets = xlsx.parse(excelFilePath);
// sheets1
sheets && sheets[0] && sheets[0].data.forEach((row, index) => {
console.log('index', index)
console.log('row', row)
})
// sheets2
sheets && sheets[1] && sheets[1].data.forEach((row, index) => {
console.log('index', index)
console.log('row', row)
})
【拓展】Node写入Excel
const xlsx = require('node-xlsx');
const fs = require('fs');
// 写入excel之后是一个一行两列的表格
const data1 = [['name', 'age']];
// 写入excel之后是一个三行两列的表格
const data2 = [['name', 'age'], ['zhang san', '10'], ['li si', '11']];
var buffer = xlsx.build([
{
name:'sheet1',
data: data1
}, {
name:'sheet2',
data: data2
}
]);
fs.writeFileSync('test-write.xlsx', buffer, {'flag':'w'}); // 如果文件存在,覆盖
生成Html
生成一个页面内容为Hello World的Html文件
const fs = require('fs');
const html = `
<html>
<head>
<title>Node.js Generated HTML</title>
</head>
<body>
<div>Hello World!!!<div/>
</body>
</html>
`;
fs.writeFile('index.html', html, err => {
if (err) {
console.error(err);
return;
}
console.log('HTML file created successfully.');
});