vue 本地xlsx文件下载_vue---excel导入导出以及本地模板下载

本文介绍如何在Vue项目中实现Excel文件的上传、导入导出功能。通过beforeUpload方法验证文件格式和大小,使用FileReader读取文件内容并利用XLSX库解析Excel数据。同时,展示了如何导出数据到Excel,使用export_json_to_excel函数将过滤后的数据转换为Excel格式。
摘要由CSDN通过智能技术生成

选取文件

上传文件

beforeUpload(file) {

const Xls = file.name.split('.');

const islt20 = file.size / 1024 / 1024 < 20;

if (Xls[1] == 'xls' || Xls[1] == 'xlsx') {

} else {

this.$message.warning('只能上传xls或者xlsx格式的文件');

return;

}

if (!islt20) {

this.$message.warning('文件大小不能超过20M');

return;

}

this.file = file;

return true;

},

async uploadRequest() {

let formData = new FormData();

formData.append('file', this.file);

let res = await request({

baseURL: '',

url: '',

methods: 'post',

data: formData,

onUploadProgress(event){

if(event.lengthComputable){

this.percentage = Math.floor(event.loaded/event.total * 100)

}

}

});

if (res.resultCode == '00') {

this.$message.success(res.resultData.message);

} else {

this.$message.success(res.resultData.message);

}

},

submitUpload(){

this.$refs.upload.submit()

},

上传与下载

点击上传

excel 转为表格导入导出

//..................导入Excel.......................................................

importfxx(obj) {

this.file = obj;

var rABS = false; //是否将文件读取为二进制字符串

var f = this.file;

var _this = this;

var reader = new FileReader();

//读取文件内容

FileReader.prototype.readAsBinaryString = function(f) {

var binary = ''; //二进制

var rABS = false; //是否将文件读取为二进制字符串

var wb; //读取完成的数据

var reader = new FileReader();

reader.onload = function(e) {

//文件读取完会触发函数

var bytes = new Uint8Array(reader.result);

var length = bytes.byteLength;

for (var i = 0; i < length; i++) {

binary += String.fromCharCode(bytes[i]); //Unicode 编码转为一个字符

}

//如果没有在main.js中引入,则此处需要引入,用于解析excel

// var XLSX = require("xlsx");

if (rABS) {

wb = XLSX.read(btoa(fixdata(binary)), {

//手动转化

type: 'base64'

});

} else {

wb = XLSX.read(binary, {

type: 'binary'

});

}

//excel文件导出并解析成JSON,这里的条件是本地表名与Excel相同

_this.tableData = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);

_this.notifyInstance.close();

};

reader.readAsArrayBuffer(f);

};

if (rABS) {

reader.readAsArrayBuffer(f);

} else {

reader.readAsBinaryString(f);

}

},

//....................导出Excel.................................................

getExcel() {

require.ensure([], () => {

const { export_json_to_excel } = require('../../introduce/Export2Excel.js')

const tHeader = ['姓名', '年龄']

const filterVal = ['name', 'age']

const list = this.tableDate

const data = this.formatJson(filterVal, list)

export_json_to_excel(tHeader, data, '导出列表名称')

})

},

formatJson(filterVal, jsonData) {

return jsonData.map(v => filterVal.map(j => v[j]))

},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用vue-json-excel导出xlsx的步骤: 1.首先,安装vue-json-excel依赖包: ```shell npm install vue-json-excel --save ``` 2.在main.js中引入vue-json-excel并注册为全局组件: ```javascript import Vue from 'vue' import App from './App.vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import JsonExcel from "vue-json-excel"; // 引入vue-json-excel Vue.component("downloadExcel", JsonExcel); // 注册为全局组件 Vue.use(ElementUI); new Vue({ render: h => h(App), }).$mount('#app') ``` 3.在需要导出Excel的组件中,使用downloadExcel组件并传入数据和表头信息: ```html <template> <div> <download-excel :data="tableData" :columns="tableColumns" :filename="'excel文件名'" :sheetname="'sheet名称'" :title="'表格标题'" :autoWidth="true" :mergeCell="[]" > <el-button type="primary">导出Excel</el-button> </download-excel> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ], tableColumns: [ { label: '姓名', field: 'name' }, { label: '年龄', field: 'age' }, { label: '性别', field: 'gender' } ] } } } </script> ``` 其中,data为需要导出的数据,columns为表头信息,filename为导出Excel文件名,sheetname为sheet名称,title为表格标题,autoWidth为是否自动调整列宽,mergeCell为需要合并的单元格信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值