vue 将数据生成为txt、execl并下载

1、txt类型文件

业务需求:希望将服务器存储的注册码通过点击下载按钮的形式导出txt文件并下载下来
具体思路为:先创建一个Blob实例并且将数据存入文件中,然后通过创建超链接触发下载使得文件直接下载到本地

function downTxt(data) {
  // 创建一个Blob实例,类型为纯文本
  const blob = new Blob([data], { type: 'text/plain;charset=utf-8' })
  // 创建一个指向该Blob的URL
  const path= URL.createObjectURL(blob)
  // 创建一个超链接
  const aLink= document.createElement('a')
  aLink.href = path;
  aLink.setAttribute('download', '注册码.txt')
  document.body.appendChild(aLink)
  // 触发下载
  aLink.click()
  // 清理
  document.body.removeChild(aLink);
  URL.revokeObjectURL(path);
}

2、execl类型文件

业务需求:希望把页面上的table渲染的数据导出为execl并下载至本地
具体思路:先引入xlsx、file-saver的依赖,创建Blob实例完成文件的下载
main.js

import FileSaver from 'file-saver'
import XLSX from 'xlsx'
Vue.prototype.$FileSaver = FileSaver
Vue.prototype.$XLSX = XLSX
 function exportToExcel() {
      let tables = document.getElementById('exceltable')
      let tableBook = this.$XLlizSX.utils.table_to_book(tables)
      var tableWrite = this.$XLSX.write(tableBook, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array'
      })
      try {
        this.$FileSaver.saveAs(
          new Blob([tableWrite], { type: 'application/octet-stream' }),
          '列表.xlsx'
        )
      } catch (e) {
        if (typeof console !== 'undefined') console.log(e, tableWrite)
      }
      return tableWrite
    }
### 实现Vue项目中数据导出至Excel #### 插件安装与配置 为了简化开发过程提高效率,在Vue项目中通常会借助第三方库来完成这一任务。`vue-json-excel` 是一个用于将JSON对象转换为Excel文件的轻量级组件,能够方便快捷地集成到现有项目当中[^1]。 ```bash npm install vue-json-excel --save ``` #### 组件注册 接下来需要在Vue实例内全局或局部引入该插件,按照官方文档说明进行必要的初始化设置: ```javascript import Vue from 'vue'; import JsonExcel from 'vue-json-excel'; // 注册为全局组件 Vue.component('downloadExcel', JsonExcel); ``` #### 页面布局设计 利用Element UI框架提供的按钮控件配合自定义属性绑定方式调用插件方法,从而达到点击按钮即可触发下载行为的效果[^2]。 ```html <template> <div class="export-container"> <!-- 导出按钮 --> <downloadExcel :data="tableData" name="example.xls"> <el-button type="primary">导出 Excel</el-button> </downloadExcel> <!-- 表格展示区域省略... --> </div> </template> <script> export default { data() { return { tableData: [ // 假设这里存储着待导出的数据集合... ] }; } }; </script> ``` 上述代码片段展示了如何创建一个简单的界面元素——当用户单击“导出 Excel”按钮时,将会启动文件生成流程将结果另存为`.xls`格式的电子表格文件[^3]。 #### 进度反馈机制 考虑到大型数据集可能引起较长的操作延迟问题,建议加入进度提示功能以便让用户了解当前状态。可以通过监听特定事件或者采用异步请求的方式来实现这一点[^5]。 ```javascript methods: { async exportWithProgress() { try { this.loading = true; await new Promise((resolve) => setTimeout(resolve, 2000)); // 模拟耗时操作 const result = await export_json_to_excel({ header: ['姓名', '年龄'], data: [['张三', 28], ['李四', 34]] }); console.log(result); // 处理成功后的逻辑 } catch (error) { console.error(error.message || "发生未知错误"); } finally { this.loading = false; } } } ``` 此段脚本示范了怎样结合async/await语法糖封装一个带有加载动画效果的方法体;同时注意捕获潜在异常情况的发生以确保用户体验不受影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值