vue JSON数据导出为 多个sheet表的excel文件

摘要:
˂!
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <script src="https://cdn.bootcss.com/xlsx/0.15.1/xlsx.full.min.js"></script>
  </head>
  <body>
    <script>
      // 数据
      let data = { '基本信息': [{name: '李四', sex: 'nan', age: 12}], '成绩': [{class: '计算机', teacher: 'Mrs wang', score: 90}] };
      let columnHeaders = { '基本信息': ['name', 'sex', 'age'], '成绩': ['class', 'teacher', 'score']}
      outputXlsxFile(
        data,
        [{ wch: 50 }, { wch: 50 }, { wch: 10 }],
        "test-xlsx"
      );

      function outputXlsxFile(data, wscols, xlsxName) {
        let sheetNames = [];
        let sheetsList = {};
        const wb = XLSX.utils.book_new();

        for (let key in data) {
          sheetNames.push(key);
          let columnHeader = columnHeaders[key] // 此处是每个sheet的表头
          let temp = transferData(data[key], columnHeader);
          sheetsList[key] = XLSX.utils.aoa_to_sheet(temp);
          sheetsList[key]["!cols"] = wscols;
        }

        wb["SheetNames"] = sheetNames;
        wb["Sheets"] = sheetsList;

        XLSX.writeFile(wb, xlsxName + ".xlsx");
      }

      function transferData(data, columnHeader) {
        let content = [];
        content.push(columnHeader);
        data.forEach((item, index) => {
          let arr = [];
          columnHeader.map(column =>{
            arr.push(item[column]);
          })
          content.push(arr);
        });
        return content;
      }
    </script>
  </body>
</html>

 
注意 上面的引入必须是xlsx.full.min.js
<script src="https://cdn.bootcss.com/xlsx/0.15.1/xlsx.full.min.js"></script>
 

免责声明:文章转载自《vue JSON数据导出为 多个sheet表的excel文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker 容器日志管理sqlserver 数据库区分大小写设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数据引用Data References

定义引用变量Reference Variables. 141 动态创建数据对象Creating Data Objects Dynamically. 141 获取数据对象引用Getting References to Data Objects. 142 解引用Dereferencing Data References 定义引用变量Reference V...

HTML5 Canvas指纹及反追踪介绍

HTML5 Canvas指纹及反追踪介绍 1 Canvas指纹的简介很多网站通过Canvas指纹来跟踪用户。browserleaks[1]是一个在线检测canvas指纹的网站。一般的指纹实现原理即通过canvas画布绘制一些图形,填写一些文字,随后获取图形的base64编码,再经过hash后得到最终的指纹。 下面是一个简单的例子,最终调用toDataUrl...

易错点。

1: Photo框架使用requestImageForAsset内存不能及时释放问题 1 // 1: targetSize 要获取的图片大小。一般设置为 屏幕宽*屏幕高*scale 生成的图片不会模糊。 2 // 2: contenMode 图片填充模式。 3 // 3: PHOmageRequestOptions 设置从图库...

vue 实现页面嵌套pdf之vue-pdf插件

近期vue移动端项目中遇到了页面内,嵌套展示pdf内容。实现方法很多种,可以用iframe嵌套,但不利于引擎优化seo。所以在网上找到了vue-pdf这个插件,这个插件非常好用,其中封装的方法也很多,属性能进行功能扩展。 接下来开始使用 第一步、安装 npm install --save vue-pdf 第二步、使用 <template> &l...

axios请求提交的form data格式 明明是JSON格式的参数却转成了字符串格式

问题:传的参数成为了字符数格式  解决:把参数的格式转换 const params = new URLSearchParams() params.append('USER_LOGIN', 'admin') params.append('PASS_WORD', '123456')...

Vue+koa2开发一款全栈小程序(3.vue入门、Mpvue入门)

1.Vue-cli 1.新建一个vue项目 打开cmd 官方命令行工具 npm install -g vue-cli //安装脚手架 cd到你想要存放demo的目录下,然后 vue init webpack vue-demo //新建demo  其中user EsLint....那一行选项要选n 还有选最后一条时,让你选npm、yarn、No,I ca...