Vue实现excel导出,不请求后端

原因是做出来的不符合需求,需要连接后端,又不想删掉,做个记录

1:先创建一个按钮

html 复制代码
 <el-col :span="1.5">
            <el-button
              @click="exportExcel"
              size="mini"
              type="primary"
              icon="el-icon-download"
            >导出Excel</el-button>
</el-col>

2:先查看是XLSX的依赖,没有的话需要安装一下

html 复制代码
npm install xlsx

安装的时候如果报错需要清理缓存,并把依赖包删掉重新安装

node_modules为项目中的依赖包

html 复制代码
npm cache clean --force

//linux
rm -rf node_modules
//windows
Remove-Item -Recurse -Force node_modules

npm install

出现这个问题的话需要,重新编译node-sass

Found bindings for the following environments: - Windows 64-bit with Node.js 10.x This usually happens because your environment has changed since running npm install. Run npm rebuild node-sass to download the binding for your current environment.

html 复制代码
npm rebuild node-sass

3:然后引入

html 复制代码
<script>
import XLSX from 'xlsx';

4:添加导出方法

html 复制代码
method:{
exportExcel() {
      // 导出Excel的方法
      if(this.list.length > 0){
      	//此处的this.list为列表的数据集合
        const data = this.list.map(item => {
          return {
            '列名1': item.数据名称,
            '列名2': item.数据名称,
            '列名3': item.数据名称,
            '列名4': item.数据名称
          };
        });
        const worksheet = XLSX.utils.json_to_sheet(data);
        const columnWidths = [
          { wch: 20 },  // 第一列宽度为20
          { wch: 15 },  // 第二列宽度为15
          { wch: 10 },  // 第三列宽度为10
          { wch: 15 }   // 第四列宽度为15
        ];
        worksheet['!cols'] = columnWidths;
        const workbook = {
          Sheets: { 'data': worksheet },
          SheetNames: ['data']
        };
        const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
        const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' });
        const filename = '文件名.xlsx';
        if (typeof navigator.msSaveBlob === 'function') {
          navigator.msSaveBlob(blob, filename);
        } else {
          const link = document.createElement('a');
          if (link.download !== undefined) {
            const url = URL.createObjectURL(blob);
            link.setAttribute('href', url);
            link.setAttribute('download', filename);
            link.style.visibility = 'hidden';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
          }
        }
      }else{
        this.$message.error('暂无数据');
      }
    },
   }
相关推荐
EnCi Zheng12 分钟前
M5-markconv自定义CSS样式指南 [特殊字符]
前端·css·python
kyriewen16 分钟前
你的网页慢,用户不说直接走——前端性能监控教你“读心术”
前端·性能优化·监控
广州华水科技16 分钟前
北斗GNSS变形监测在大坝安全监测中的应用与优势分析
前端
前端老石人27 分钟前
前端开发中的 URL 完全指南
开发语言·前端·javascript·css·html
CAE虚拟与现实28 分钟前
五一假期闲来无事,来个前段、后端的说明吧
前端·后端·vtk·three.js·前后端
Sarvartha39 分钟前
三目运算符
linux·服务器·前端
晓晨的博客1 小时前
ROS1录制的bag包转换为ROS2格式
前端·chrome
Wect1 小时前
LeetCode 72. 编辑距离:动态规划经典题解
前端·算法·typescript
donecoding1 小时前
别再让 pnpm 跟着 nvm 跑了!独立安装终极指南
前端·node.js·前端工程化
GISer_Jing1 小时前
AI全栈转型_TS后端学习路线
前端·人工智能·后端·学习