首页 > 其他分享 >xlsx 前端插件 导出 elment表格示例

xlsx 前端插件 导出 elment表格示例

时间:2024-07-21 12:18:21浏览次数:11  
标签:xlsx 插件 const wb XLSX 示例 book table

安装

yarn add xlsx
yarn add file-saver

git文档:https://github.com/rockboom/SheetJS-docs-zh-CN
npm地址:https://www.npmjs.com/package/xlsx

代码



<template>
	<div class='box'>
		pageC

		<el-button type="primary" size="default" @click="exportExcel">导出表格</el-button>

		<div>
			<el-table id="exportTable" ref="tableRef" :data="tableData" border>
				<el-table-column label="姓名" prop="name" />
				<el-table-column label="头像" prop="image">
					<template v-slot='{ row }'>
						<el-image :src="row.image" fit="cover" :lazy="true"></el-image>
					</template>
				</el-table-column>
				<el-table-column label="年龄" prop="age" />
				<el-table-column label="性别" prop="sex" />
				<el-table-column label="省" prop="province" />
				<el-table-column label="市" prop="city" />
				<el-table-column label="区县" prop="region" />
			</el-table>
		</div>
	</div>
</template>
<script lang='ts' setup>
// import { ref, reactive, computed, onMounted, nextTick } from 'vue';

import * as XLSX from 'xlsx';

import FileSaver from "file-saver"

// import Mock from "mockjs"
import Mock, { Random } from "mockjs";

const resData = Mock.mock({
	// key中min-max 代表随机生成5到10条数组数据
	'list|5-10': [{
		//value @id 可以随机生成id
		'id': '@id',
		'name': '@name',
		'image': '@image',
		'title': '@title',
		'string': '@string',
		'county': '@county',
		'province': '@province',
		'city': '@city',
		'region': '@region',
		'date': '@date',
		// 函数Random 可以调用各种api随机生成字符
		'time': Random.time(),
		//key中18-30代表随机18到30其中一个数
		'age|18-30': 18,
		// key 中 1代表数组中随机选择一个
		'sex|1': ['男', '女'],
	}]
})

const tableData = resData.list;

console.log(tableData, "tableData_SDLSJLFK")

const tableRef = ref<Element>()


// /**
//  * @description: 
//  * @param {*} json
//  * @return {*}
//  */
// function exportExcell(json) {
// 	// const excelData = [
// 	// 	['姓名', '年龄', '性别'],
// 	// 	['dyx', '26', '男'],
// 	// 	['dyxweb', '26', '男'],
// 	// ];
// 	const wb = XLSX.utils.book_new();
// 	const ws = XLSX.utils.aoa_to_sheet(json);
// 	XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); // 将数据添加到工作薄
// 	XLSX.writeFile(wb, 'test.xlsx'); // 导出Excel



// }



// function exportHtmlTable() {
// 	// console.log(tableRef,"tableRef")
// 	//获取dom元素
// 	var table_dom = document.querySelector('.el-table__body')
// 	//将dom转换为book
// 	const new_book = XLSX.utils.table_to_book(table_dom)
// 	// 导出excel文件 如导出后的文件不能打开,请将后缀替换为 .xls
// 	XLSX.writeFile(new_book, '数据导出.xlsx')

// }


function exportExcel() {
	//转换成excel时,使用原始的格式
	var xlsxParam = { raw: true };
	let fix = document.querySelector(".el-table__fixed");
	let wb;
	//判断有无fixed定位,如果有的话去掉,后面再加上,不然数据会重复
	if (fix) {
		wb = XLSX.utils.table_to_book(
			document.querySelector("#exportTable")!.removeChild(fix), xlsxParam
		);
		document.querySelector("#exportTable")!.appendChild(fix);
	} else {
		wb = XLSX.utils.table_to_book(document.querySelector("#exportTable"), xlsxParam);
	}

	var wbout = XLSX.write(wb, {
		bookType: "xlsx",
		bookSST: true,
		type: "array",
	});
	try {
		FileSaver.saveAs(
			new Blob([wbout], { type: "application/octet-stream" }),
			"我的测试导出表格.xlsx"
		); //文件名
	} catch (e) {
		if (typeof console !== "undefined") console.log(e, wbout);
	}
	return wbout;
}



</script>
<style lang='scss' scoped></style>

导出效果
image

用到的xlsx api 部分文档

  • XLSX.utils.table_to_book
    image
  • XLSX.write
    image

具体可以查看文档

https://github.com/rockboom/SheetJS-docs-zh-CN

标签:xlsx,插件,const,wb,XLSX,示例,book,table
From: https://www.cnblogs.com/jocongmin/p/18314336

相关文章

  • vscode注释插件koroFileHeader使用, vue 文件注释插件
    使用文档https://github.com/OBKoro1/koro1FileHeader/wiki/安装和快速上手git地址https://github.com/OBKoro1/koro1FileHeader安装测试搜索setting.json用户输入如下配置//头部注释"fileheader.customMade":{//Author字段是文件的创建者可以在specialO......
  • IDEA的APIPost接口测试插件详解
    APIPOST官方网址一、安装APIPost插件打开IntelliJIDEA:启动您的IntelliJIDEA开发环境。导航到插件设置:在Windows或Linux上,点击File>Settings。在macOS上,点击IntelliJIDEA>Preferences。搜索并安装APIPost插件:在设置窗口中,选择Plugins。点击Marketplace标签......
  • 在 PowerShell 中,可以编写脚本来检测本地加载和远程加载的情况。这通常涉及到检查计算
    在PowerShell中,可以编写脚本来检测本地加载和远程加载的情况。这通常涉及到检查计算机上的特定服务或应用程序的状态或配置。以下是一些示例脚本和方法,可以用来实现这些检测:检测本地加载示例:检查本地服务的运行状态powershellCopyCode#检查本地服务状态$serviceName="M......
  • 在 PowerShell 中,"本地加载"和"远程加载"通常指的是运行脚本或命令的位置或方式。以下
    在PowerShell中,"本地加载"和"远程加载"通常指的是运行脚本或命令的位置或方式。以下是关于本地加载和远程加载的一些基本概念和示例:本地加载本地加载指的是在当前计算机上执行PowerShell脚本或命令。这些脚本和命令直接在本地计算机上运行,无需通过网络连接到其他计算机或服......
  • SeleniumBase 示例失败 Cloudflare Turnstile
    我在尝试自动提交包含CloudflareTurnstileCAPTCHA的表单时遇到了SeleniumBase的问题。等待7秒后尝试查找iframe元素时,脚本失败并出现NoSuchElementException。https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_form_turnstile.pyfr......
  • chrome 插件开发
    chrome插件介绍 Chrome插件(ChromeExtension)是一种可以扩展浏览器功能的小程序,它们可以修改和增强浏览器的功能,提供更好的用户体验。常见的用途和功能1.修改网页内容Chrome插件可以访问和修改当前网页的内容。例如:广告拦截:移除网页上的广告。内容高亮:高亮显示特定的......
  • 简单的 DiffSharp 示例
    如何将这个简单的PyTorch片段转换为DiffSharp?应该是类似的,但是很多功能没找到。#Definetensorswithrequires_grad=Truetotrackcomputationhistoryx=torch.tensor(2.0,requires_grad=True)y=torch.tensor(3.0,requires_grad=True)#Performacomputation......
  • 音频文件降噪及python示例
    操作系统:Windows10_x64Python版本:3.9.2noisereduce版本:3.0.2从事音频相关工作,大概率会碰到降噪问题,今天整理下之前学习音频文件降噪的笔记,并提供Audacity和python示例。我将从以下几个方面展开:noisereduce库介绍使用Audacity进行降噪使用fft滤波降噪使用noisereduce进......
  • IDA Pro 8.3安装keypatch插件--odulenotfounderror: no module named 'keystone'
    按照这位博主的方法弄,一般没什么问题。http://t.csdnimg.cn/oepIT附上keypatch.py文件下载地址>https://github.com/keystone-engine/keypatch我是弄了之后发现还是报错,几经尝试,想到我有两个python环境,虽然确实是在ida使用的python环境下安装的,但是我没有指定路径,也许有......
  • ComfyUI进阶:Comfyroll插件 (五)
    前言:学习ComfyUI是一场持久战,而Comfyroll是一款功能强大的自定义节点集合,专为ComfyUI用户打造,旨在提供更加丰富和专业的图像生成与编辑工具。借助这些节点,用户可以在静态图像的精细调整和动态动画的复杂构建方面进行深入探索。Comfyroll的节点设计简洁易用,功能强大,是每个......