首页 > 其他分享 >vue 前端导出

vue 前端导出

时间:2023-03-06 14:57:05浏览次数:42  
标签:vue worksheet 前端 导出 fileName item let hs

1.安装依赖

npm install -S xlsx

npm install -S xlsx-style

2、导出export插件封装 utils/exportExcel.js /**  * @file 导出export插件封装  */
 import * as styleXLSX from 'xlsx-style'
 /**   * 将 String 转换成 ArrayBuffer   * @method 类型转换   * @param {String} [s] wordBook内容   * @return {Array} 二进制流数组   */  function s2ab (s) {      let buf = null;        if (typeof ArrayBuffer !== 'undefined') {          buf = new ArrayBuffer(s.length);          let view = new Uint8Array(buf);            for (let i = 0; i != s.length; ++i) {              view[i] = s.charCodeAt(i) & 0xFF;          }            return buf;      }        buf = new Array(s.length);        for (let i = 0; i != s.length; ++i) {            // 转换成二进制流          buf[i] = s.charCodeAt(i) & 0xFF;      }        return buf;  }    /**   * 方案一:利用 URL.createObjectURL 下载 (以下选用)   * 方案二:通过 file-saver 插件实现文件下载   * @method 文件下载   * @param {Object} [obj] 导出内容 Blob 对象   * @param {String} [fileName] 文件名 下载是生成的文件名   * @return {void}   */  function saveAs (obj, fileName) {      let aLink = document.createElement("a");        if (typeof obj == 'object' && obj instanceof Blob) {          aLink.href = URL.createObjectURL(obj); // 创建blob地址      }            aLink.download = fileName;      aLink.click();      setTimeout(function () {          URL.revokeObjectURL(obj);      }, 100);  }    /**   * @method 数据导出excel   * @param {Object} [worksheets] 工作表数据内容   * @param {String} [fileName='ExcelFile'] 导出excel文件名   * @param {String} [type='xlsx'] 导出文件类型   */  export default function export2Excel ({      worksheets,      fileName = 'ExcelFile',      type = 'xlsx'  } = {}) {        let sheetNames = Object.keys(worksheets);      let workbook = {          SheetNames: sheetNames, //保存的工作表名          Sheets: worksheets      };        // excel的配置项      let wopts = {            bookType: type,  // 生成的文件类型          bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性          type: 'binary'        }        // attempts to write the workbook      let wbout = styleXLSX.write(workbook, wopts);      let wbBlob = new Blob([s2ab(wbout)], {          type: "application/octet-stream"      });        saveAs(wbBlob, fileName + '.' + type);  }  3、业务代码封装 export.js import XLSX from "xlsx"; import exportExcel from "@/utils/exportExcel"; export function exportListExcel(dataList) {               let aoa = [], headers = ["姓名", "班级", "学号", "座位", "成绩", "分数", "排名"],     data = [];     aoa.push(headers);     dataList.forEach(item => {       data = [item.khId,item.khName,item.buCode,item.buName,item.productCode,item.productName,item.authStatusStr]       aoa.push(data);
    });     let worksheet = XLSX.utils.aoa_to_sheet(aoa);     worksheet["!cols"] = [           { wpx: 80 },       { wpx: 180 },       { wpx: 80 },       { wpx: 80 },       { wpx: 80 },       { wpx: 280 },       { wpx: 80 },               ];     let hs = {       border: {         top: { style: "thin" },         left: { style: "thin" },         bottom: { style: "thin" },         right: { style: "thin" },       },       fill: { bgColor: { indexed: 31 }, fgColor: { rgb: "CCCCFF" } },       font: {         name: "宋体",         bold: true,       },     };     worksheet["A1"].s = hs;     worksheet["B1"].s = hs;     worksheet["C1"].s = hs;     worksheet["D1"].s = hs;     worksheet["E1"].s = hs;     worksheet["F1"].s = hs;     worksheet["G1"].s = hs;     exportExcel({     worksheets: { Sheet0: worksheet }, // 导出excel的数据,key表示工作表名,value表示对应工作表的 sheet 数据,支持导出多个工作表     fileName: '产品经销授权申请导出', // 导出文件名     type: "xlsx", // 文件导出类型   });   }

标签:vue,worksheet,前端,导出,fileName,item,let,hs
From: https://www.cnblogs.com/kali5k/p/17183885.html

相关文章

  • Vue父子组件渲染顺序
    创建基本组件结构父组件//father.vue<template><divclass="father">父组件<span>父组件数值:{{val}}</span><button@click="add">父......
  • Vue实例挂载的过程中发生了什么?
    Vue实例挂载的过程中发生了什么?      根元素是不可以放在body或者html上的可以在对象中定义template/render或者直接使用template,el表示元素选择器......
  • vue中element table 单选,添加单选框
        参考:https://blog.csdn.net/qq_45780380/article/details/126272154......
  • Spring Boot&Vue3 前后端分离 实战 wiki 知识库系统<一>--Vue CLI 项目搭建目搭建
    接着上一次​​SpringBoot&Vue3前后端分离实战wiki知识库系统<二>---后端架构完善与接口开发​​的继续往下,这次则开始涉及到前端Vue框架的学习了,为之后的后台界面搭建......
  • 初识VUE响应式原理
    作者:京东零售吴静自从Vue发布以来,就受到了广大开发人员的青睐,提到Vue,我们首先想到的就是Vue的响应式系统,那响应式系统到底是怎么回事呢?接下来我就给大家简单介绍一下Vue......
  • Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<一>--Vue3 + Vue CLI 项Vue3 +
    接着上一次https://www.cnblogs.com/webor2006/p/17139526.html的继续往下,这次则开始涉及到前端Vue框架的学习了,为之后的后台界面搭建打好地基。了解Vue和VueCLI及其关系......
  • 【前端】一个更底层库-React基础知识
    (目录)这一篇学习React知识点。分别从属性状态和相关API了解一下。属性状态属性状态要知道这几个PROPS,PROPVALIDATION,STATE。PROPS通过this.props可以获取传递给该......
  • 一篇文章介绍清楚前端可视化开发工具
    在数字化信息丰富发展的当下,为了适应互联网的快速发展和激烈竞争,前后端分离已经成为趋势。那么,大家知道前端可视化开发工具吗?都有哪些具体内容?今天,流辰信息低代码开发服务......
  • vue-cli-service
    是一个构建(build)编译vue项目的工具,提供了服务页面渲染的功能(serve)它的功能就是把vue源码编译为静态页面输出到dest指定的目录。通常是dist目录,build构建运行后输出到di......
  • vue2项目增加eslint配置代码规范示例
    eslint用于代码检查,prettier用于代码格式化,具体操作如下1.安装以下eslint插件安装以下eslint插件,并增加.eslintrc.js配置文件,.eslintignore配置忽略检查的文件(1)eslint......