json文件转Excel

数据导出

1.懒人模式

复制这段代码即可

缺点:出错不好维护!

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
  <title>Document</title>
</head>
<body>
<div>
  <input type="file" id="files"/>
  <button onclick="jsonToExcel()">导出为Excel</button>
</div>
<script>
  var json;
  var inputElement = document.getElementById("files");
  inputElement.addEventListener("change", handleFiles, false);
  function handleFiles() {
    
    
    var selectedFile = document.getElementById("files").files[0];
    var reader = new FileReader();
    reader.readAsText(selectedFile,"UTF-8");
    reader.onload = function(){
    
    
      json = JSON.parse(this.result);
    };
  }
  function jsonToExcel () {
    
    
    var filename = "write.xlsx";
    var ws_name = "SheetJS";
    var wb = XLSX.utils.book_new();
    var ws = XLSX.utils.json_to_sheet(json);
    XLSX.utils.book_append_sheet(wb, ws, ws_name);
    XLSX.writeFile(wb, filename);
  }
</script>
</body>
</html>

2.node.js 转化插件

2.1需要引入

npm install --save exceljs

代码如下

var Excel = require('exceljs');

var start_time = new Date();

var workbook = new Excel.stream.xlsx.WorkbookWriter({
    
    
  filename: './导出成功文件.xlsx'
});
var worksheet = workbook.addWorksheet('Sheet');

worksheet.columns = [
  {
    
     header: '姓名', key: 'name' },
  {
    
     header: '电话', key: 'tel' },
  {
    
     header: '中奖信息', key: 'name2' },
  {
    
     header: '省市区', key: 'address' },
  {
    
     header: '详细地址', key: 'addressContent' },
];
tel:
var data = [
    {
    
    
        name:"大锤",
        tel:"110110",
        name2:"超级宇宙手办",
        address:"中国省中国市中国",
        addressContent:"地球村"
    }
]
var length = data.length;

// 当前进度
var current_num = 0;
var time_monit = 400;
var temp_time = Date.now();

console.log('开始添加数据');
// 开始添加数据
for(let i in data) {
    
    
  worksheet.addRow(data[i]).commit();
  current_num = i;
  if(Date.now() - temp_time > time_monit) {
    
    
    temp_time = Date.now();
    console.log((current_num / length * 100).toFixed(2) + '%');
  }
}
console.log('添加数据完毕:', (Date.now() - start_time));
workbook.commit();

var end_time = new Date();
var duration = end_time - start_time;

console.log('用时:' + duration);
console.log("程序执行完毕");

其中 workbook 为 导出文件和路径

data 为导出数据

columns 为前面的header 为导出到exel的头 key值必须与数据对应

在就一些语法其实内容很简单 有兴趣的可以学习下exceljs这个库!

node.js启动

node server.js

猜你喜欢

转载自blog.csdn.net/yang939207690/article/details/108221933