node读取Excel生成html

144 阅读1分钟

最近在工作生活中遇到一个场景,需要根据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.');
});