首页 > 其他分享 >二维数组下载为excel(导出)

二维数组下载为excel(导出)

时间:2024-07-31 16:19:28浏览次数:13  
标签:attribute type tags excel 导出 else 二维 res data

/*导出*/
	const s2ab = function(s) {
		const buf = new ArrayBuffer(s.length);
		const view = new Uint8Array(buf);
		for(let i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xFF;
		return buf;
	}
	const exportClick = async function() {
		//多个组数据处理
		let idList = []
		multipleSelection.value.forEach(item => {
			idList.push({
				group: item.name,
				interval: item.interval
			})
		})
		if(multipleSelection.value.length > 0) {
			var k = 0
			var jsonArr = []
			for(var g = 0; g < idList.length; g++) {
				k++
				await tags({
					group: idList[g].group,
					node: router.currentRoute.value.query.node
				}).then(res => {
					if(res.status == 200) {
						for(var i = 0; i < res.data.tags.length; i++) {
							res.data.tags[i].group = idList[g].group
							res.data.tags[i].interval = idList[g].interval
							if(res.data.tags[i].attribute == 1) {
								res.data.tags[i].attribute = 'Read'
							} else if(res.data.tags[i].attribute == 2) {
								res.data.tags[i].attribute = 'Write'
							} else if(res.data.tags[i].attribute == 3) {
								res.data.tags[i].attribute = 'Read Write'
							} else if(res.data.tags[i].attribute == 4) {
								res.data.tags[i].attribute = 'Subscribe'
							} else if(res.data.tags[i].attribute == 5) {
								res.data.tags[i].attribute = 'Read Subscribe'
							} else if(res.data.tags[i].attribute == 6) {
								res.data.tags[i].attribute = 'Write Subscribe'
							} else if(res.data.tags[i].attribute == 7) {
								res.data.tags[i].attribute = 'Read Write Subscribe'
							}
							if(res.data.tags[i].type == 3) {
								res.data.tags[i].type = 'INT16'
							} else if(res.data.tags[i].type == 4) {
								res.data.tags[i].type = 'UINT16'
							} else if(res.data.tags[i].type == 5) {
								res.data.tags[i].type = 'INT32'
							} else if(res.data.tags[i].type == 6) {
								res.data.tags[i].type = 'UINT32'
							} else if(res.data.tags[i].type == 7) {
								res.data.tags[i].type = 'INT64'
							} else if(res.data.tags[i].type == 8) {
								res.data.tags[i].type = 'UINT64'
							} else if(res.data.tags[i].type == 9) {
								res.data.tags[i].type = 'FLOAT'
							} else if(res.data.tags[i].type == 10) {
								res.data.tags[i].type = 'DOUBLE'
							} else if(res.data.tags[i].type == 11) {
								res.data.tags[i].type = 'BIT'
							} else if(res.data.tags[i].type == 13) {
								res.data.tags[i].type = 'STRING'
							} else if(res.data.tags[i].type == 14) {
								res.data.tags[i].type = 'BYTES'
							}
							jsonArr.push(res.data.tags[i])
						}
						if(k == idList.length) {
							const data = jsonArr.map(obj => [obj.group, obj.interval, obj.name, obj.address, obj.attribute, obj.type, obj.description, obj.decimal, obj.precision]);
							data.unshift(['group', 'interval', 'name', 'address', 'attribute', 'type', 'description', 'decimal', 'precision', ])
							/*二维数组下载为excel*/
							const worksheet = XLSX.utils.aoa_to_sheet(data);
							const workbook = XLSX.utils.book_new();
							XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
							const element = document.createElement('a');
							const blob = new Blob([s2ab(XLSX.write(workbook, {
								bookType: 'xlsx',
								type: 'binary'
							}))], {
								type: "application/octet-stream"
							});
							element.href = URL.createObjectURL(blob);
							element.download = 'tags.xlsx';
							element.click(); // 模拟点击下载
							ElMessage({
								type: 'success',
								message: '导出成功',
							})
							getListFun()
						}

					} else {
						ElMessage({
							type: 'error',
							message: res.data.message,
						})
					}
				}).catch(err => {
					console.log(err);
				})
			}

		} else {
			ElMessage({
				type: 'info',
				message: '请至少选择一条导出的数据!'
			})
		}
	}

  

  注意:

    记得安包XLSX 

    引用 import * as XLSX from 'xlsx'

标签:attribute,type,tags,excel,导出,else,二维,res,data
From: https://www.cnblogs.com/nengnengc-nnc/p/18334883

相关文章

  • excel文件 —— array(导入)
    /*导入*/ letnodeData=ref() //文件上传 constuploadFile=function(file){ vargroups=[] //excel文件——array constreader=newFileReader(); reader.readAsArrayBuffer(file.raw); reader.onload=function(e){ constdata=newUint8Arr......
  • Python:使用默认模块在python中读取excel
    我有Python2.6.6版本,但无法安装pandas、xlrd、xlwt等新模块。我想使用Python读取Excel。是否可以使用Python中存在的默认模块读取Excel。抱歉,不能使用Python2.6.6的默认模块读取Excel文件。Python没有内置的功能来处理Excel文件。使用外部库(如提......
  • 在Python中将简单的字典导出到Excel文件中
    我是Python新手。我有一个简单的字典,其键和值如下dict1={"numberofstoragearrays":45,"numberofports":2390,......}我需要将它们放入Excel表中,如下numberofstoragearrays45numberofports2390我有一个非常大的字典。importpandasasp......
  • Go--创建以当前时间命名的excel文件
    下载依赖包goget-ugithub.com/xuri/excelize/v2 代码packagemainimport("fmt""github.com/xuri/excelize/v2""time")funcmain(){//获取当前时间now:=time.Now()filename:=fmt.Sprintf("%s.xlsx&......
  • 高效便捷的二维码生成与分享新体验
    在数字化时代,信息的传递与分享变得尤为重要。无论是商务文件、个人文档,还是活动宣传、产品推广,都需要一种高效、便捷的方式来进行信息的展示与分享。易易二维码,作为一款集多WPS、Office文件在线预览、二维码设计、二维码在线报名、网址、图文、文件转二维码以及二维码浏览记录导出......
  • 三种语言实现二维差分(C++/Python/Java)
    题目输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1,y1,x2,y2,c其中(x1,y1)和(x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数n,......
  • 世界上速度最快的超级计算机推导出超级BC8钻石配方
    BC8超级钻石比任何已知材料都要坚硬,但它们很可能只存在于巨型系外行星的内核中。现在,世界上最强的超级计算机"前沿"已经揭开了它们形成的秘密,这一发现可能会导致在地球上生产它们。钻石不仅是夺人眼球的珠宝,而且在世界各地被广泛应用。作为世界上最坚硬的物质–得益于其......
  • Vue3 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档
    前言如果您需要Vue2版本,请访问这篇文章。在vue3|nuxt3项目开发中,详解实现项目内部“打开解析预览各种office文档”通用预览插件,支持弹出一个窗口在弹框内预览或者直接显示在页面某个div容器里面,解析预览word文档、excel电子表格、ppt演示文稿、pdf文档、txt文......
  • Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档
    前言如果您需要Vue3版本,请访问在vue2|nuxt2项目开发中,详解实现项目内部“打开解析预览各种office文档”通用预览插件,解析预览word文档、excel电子表格、ppt演示文稿、pdf文档、txt文本等,支持弹出一个窗口在弹框内预览或者直接显示在页面某个div容器里面,让vue项......
  • P10814 【模板】离线二维数点 题解
    题目传送门思路一眼主席树板子题,但是一看数据范围\(n,m\le2\times10^6\),似了。在线做法应该是似完了,考虑离线做法。我们知道树状数组是可以做二维偏序的,大家应该都知道一个经典问题:对于一个序列,多次询问下标\(\lea\)且数值\(\leb\)的数的个数。回到这道题,相比上面......