file export module reference

This article uses vue, combined with element, js development
1. Download before use

npm i js-export-excel

2. Module reference

<template>
	<!-- 导出模块 -->
	<div class="exportfull">
		<div style="margin: 100px 100px; overflow: auto;">
			<div style="margin-top: 20px">
				<el-button type="primary" @click="backPop">返回</el-button>
				<el-button @click="toggleSelection()">取消选择</el-button>
				<el-button @click="exportexcel()">确认导出</el-button>
			</div>
			<div style="position: relative;">
				<!-- 列表显示内容,需要根据自己需要导出的部分填写 -->
				<el-table ref="multipleTable" :data="list" tooltip-effect="dark" style="width: 100%" height="600px"
					@selection-change="handleSelectionChange">
					<el-table-column type="selection" width="55">
					</el-table-column>
					<el-table-column prop="name" label="姓名" width="120" fixed></el-table-column>
					<el-table-column prop="name_used_before" label="曾用名" width="120"></el-table-column>
					<el-table-column prop="age" label="年龄" width="120"></el-table-column>
					<el-table-column prop="id_card" label="身份证号" width="120"></el-table-column>
					<el-table-column prop="tags" label="标签" width="120"></el-table-column>
					<el-table-column prop="address" label="地址" width="120"></el-table-column>
					<el-table-column prop="gender" label="性别" width="120"></el-table-column>
					<el-table-column prop="is_party" label="党员" width="120"></el-table-column>
					<el-table-column prop="native_place_id" label="籍贯" width="120"></el-table-column>
					<el-table-column prop="profession" label="行业" width="120"></el-table-column>
					<el-table-column prop="id_card_address" label="身份证地址" width="120"></el-table-column>
					<el-table-column prop="residential_quarters_address" label="小区地址" width="120"></el-table-column>
					<el-table-column prop="company" label="工作单位" width="120"></el-table-column>
					<el-table-column prop="company_address" label="工作单位地址" width="120"></el-table-column>
					<el-table-column prop="birth_address" label="出生地址" width="120"></el-table-column>
					<el-table-column prop="education" label="学历" width="120"></el-table-column>
					<el-table-column prop="marital_status" label="婚姻状况" width="120"></el-table-column>
					<el-table-column prop="religion" label="宗教信仰" width="120"></el-table-column>
					<el-table-column prop="is_resident" label="常驻居民" width="120"></el-table-column>
					</el-table-column>
				</el-table>
			</div>
		</div>
	</div>
</template>
<script>
	//npm i js-export-excel
	import ExportJsonExcel from "js-export-excel";
	export default {
    
    
		props: ["list"],
		data() {
    
    
			return {
    
    
				multipleSelection: [],
				lists: []
			}
		},
		mounted() {
    
    },
		methods: {
    
    
			toggleSelection(rows) {
    
    
				if (rows) {
    
    
					rows.forEach(row => {
    
    
						this.$refs.multipleTable.toggleRowSelection(row);
					});
				} else {
    
    
					this.$refs.multipleTable.clearSelection();
				}
			},
			handleSelectionChange(val) {
    
    
				this.multipleSelection = val;
				console.log(this.multipleSelection, 555)
			},
			backPop() {
    
    
				let shows = false
				this.$emit('close', shows)
			},
			exportexcel() {
    
    
				const dataList = this.multipleSelection;
				let lengths = dataList.length;
				if (lengths > 0) {
    
    
					let option = {
    
    }; //   option代表的就是excel文件
					let dataTable = []; //   dataTable代表excel文件中的数据内容
					if (dataList) {
    
    
						for (let i in dataList) {
    
    
							let j = Number(i) + 1
							let obj = {
    
    
								序号: j,
								姓名: dataList[i].name,
								曾用名: dataList[i].name_used_before,
								年龄: dataList[i].age,
								身份证号: dataList[i].id_card,
								标签: dataList[i].tags,
								地址: dataList[i].address,
								性别: dataList[i].gender,
								党员: dataList[i].is_party,
								籍贯: dataList[i].native_place_id,
								行业: dataList[i].profession,
								身份证地址: dataList[i].id_card_address,
								小区地址: dataList[i].residential_quarters_address,
								工作单位: dataList[i].company,
								工作单位地址: dataList[i].company_address,
								出生地址: dataList[i].birth_address,
								学历: dataList[i].education,
								婚姻状况: dataList[i].marital_status,
								宗教信仰: dataList[i].religion,
								常住居民: dataList[i].is_resident,
							};
							dataTable.push(obj); //   设置excel每列获取的数据源
						}
					}
					option.filename = "小区列表"; //excel文件名
					//excel文件数据
					option.datas = [{
    
    
						//   excel文件的数据源
						sheetData: dataTable,
						//   excel文件sheet的表名
						sheetName: "sheet",
						//   excel文件表头名
						sheetHeader: ["序号", "姓名", "曾用名", "年龄", "身份证号", "标签", "地址", "性别", "党员", "籍贯", "行业", "身份证地址",
							"小区地址", "工作单位", "工作单位地址", "出生地址", "学历", "婚姻状况", "宗教信仰", "常驻居民"
						],
						//   excel文件列名
						sheetFilter: ["序号", "姓名", "曾用名", "年龄", "身份证号", "标签", "地址", "性别", "党员", "籍贯", "行业", "身份证地址",
							"小区地址", "工作单位", "工作单位地址", "出生地址", "学历", "婚姻状况", "宗教信仰", "常驻居民"
						],
					}, ];
					//   创建ExportJsonExcel实例对象
					let toExcel = new ExportJsonExcel(option);
					//   调用保存方法
					toExcel.saveExcel();
				} else {
    
    
					this.$message({
    
    
						message: '没有选择导出列',
						type: 'warning'
					});
				}
			}
		}
	}
</script>

<style>
	.exportfull {
    
    
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		background-color: rgba(0, 0, 0, 0.2);
		z-index: 1000;
	}
</style>

three. main.js reference

//导出文件
import exportExcel from "./components/public/excelpublic.vue"
Vue.component("export-excel-common", exportExcel)

4. Page reference
1. list is the value passed to the module by the page (passed from parent to child)

<export-excel-common :list="listexport" ></export-excel-common>

insert image description here

Guess you like

Origin blog.csdn.net/m0_69327201/article/details/129466304