网站首页 > java教程 正文
前言:
以前将excel数据导入到数据库是通过前端,将excel文件上传到后端,通过后端语言进行相应的加工将excel文件中的数据取出并存入数据库;从而实现数据库的存入流程。但是这也带来了一些问题,首先是后端对excel文件数据的操作不够透明;其次是通过服务器操作数据会造成服务器压力和储存的压力增加。所以将数据的读取放置到前端是势在必行。
Vue将excel中的数据进行提取需要js-xlsx库的支持。
EuiAdmin
导入500条数据测试
JavaScript库:js-xlsx
安装:
要安装js-xlsx的JavaScript库,需要安装node.js,提供npm+vuecli的环境支持。在此基础上将命令提示符切换到项目根目录然后执行"npm install js-xlsx --save"便可完成安装。
原理:
要将excel文件的数据取出,在js-xlsx库的支持下需要三步便可完成数据的导入和数据key值的替换。
1. 文件导入,将需要提取的excel文件导入到前端。
2. Excel文件读取,通过js-xlsx库将数据读取出来。
3. 通过key字典转换,将excel中每列的标题替换为数据对应的key方便后端将数据存入数据库。
示例代码:
<template>
<el-upload
class="upload-demo"
action
:auto-upload="false"
:show-file-list="false"
:on-change="choose_file"
>
<el-button size="small" type="primary">请选择导入excel</el-button>
</el-upload>
</template>
<script>
import XLSX from "xlsx";
export default {
data() {
return {
file: "",
excel_import_data:''
};
},
methods: {
choose_file(file) {
this.file = file.raw;//这是element的导入数据选择,必须要添加.raw才能获取,其他表单不需要
// console.log(this.file);//上传文件信息
this.importExcel(this.file)
},
importExcel(file) {
var excelData = [];
//声明一个文件读取器
const fileReader = new FileReader();
//文件读取成功时触发事件
fileReader.onload = (ev) => {
try {
//读取的文件;
const data = ev.target.result;
//以二进制流方式读取得到整份excel表格
const workbook = XLSX.read(data, { type: "binary" });
// 循环遍历excel的sheet对象
Object.keys(workbook.Sheets).forEach((sheet) => {
console.info(workbook.Sheets[sheet]["!ref"]);
excelData.push(
//将excel 转换成json对象放入数组中
...XLSX.utils.sheet_to_json(workbook.Sheets[sheet])
);
});
// 自定义事件,比如校验excel数据。转换数据格式…
// console.log(excelData)//未转换key值的数据
this.changeKey(excelData)//调用转换key值
} catch (e) {
this.$message.danger('文件类型不正确');
}
};
//读取文件
fileReader.readAsBinaryString(file);
},
changeKey(excelData){
var newKeyMap={//key转换字典,左侧为旧的key值。右侧为新key值
'昵称':'user_pet_name',
'用户名':'user_name',
'用户邮箱':'user_email',
'用户电话':'user_phone',
'性别':'user_sex',
'用户年龄':'user_age',
'用户类别':'user_label',
}
for (let i = 0; i < excelData.length; i++) {//进行字典替换
var obj = excelData[i];
for (let key in obj) {
var newKey=newKeyMap[key]
if(newKey){
obj[newKey]=obj[key]
delete obj[key]
}
}
}
this.excel_import_data=excelData//转换成功后的数据
// console.log(this.excel_import_data)
this.$emit('excel_data',this.excel_import_data)//将数据传到父组件
this.$message.success("导入成功,已为您显示到数据表格,您也可以查看console");
}
},
};
</script>
示例图片:
选择excel文件:
读取50excel数据:
替换key值后:
注意事项:
1、注意key字典数据的替换,左侧为excel文件中的标题,右边为要替换的内容;如果要存储到数据库那么要和数据库的key相对应。
结语:
你可以通过访问euiadmin.com获取源码进行参考,源码位于文件src/module/excel/ImportExcel.vue文件中;你可以通过源码更好的了解。
如果你喜欢可以"点赞+关注+评论"三联一波。
猜你喜欢
- 2024-09-21 如何把excel表格处理成json数据(jason转excel)
- 2024-09-21 一个读Excel数据的小例子,提供给爱学习的Java后端开发
- 2024-09-21 快速将Excel、CSV等格式文件数据转换到java对象
- 2024-09-21 GitHub Star 8800+ 的阿里开源的 Java 解析 Excel 工具
- 2024-09-21 还在重复劳动?不如用Python自动生成Excel以邮件发送
- 2024-09-21 Java8如何让Excel的读写变得更加简单高效
- 2024-09-21 java打印Excel表格(java输出excel表格)
- 2024-09-21 整理关于java写入内容到excel的例子供大家参考
- 2024-09-21 JavaAPI开发(3)POI——如何将List转换为excel文件
- 2024-09-21 【Java程序】读取指定路径下文件夹中的文件名,生成Excel表格!
你 发表评论:
欢迎- 最近发表
-
- class版本不兼容错误原因分析(class更新)
- 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- java svn版本管理工具(svn软件版本管理)
- 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 开发java项目,选择哪个版本的JDK比较合适?
- Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- POI Excel导入(poi excel导入附件)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)