在Vue+SpringBoot應(yīng)用中實(shí)現(xiàn)導(dǎo)入導(dǎo)出excel表功能全過(guò)程
如何在Vue+SpringBoot應(yīng)用中導(dǎo)入導(dǎo)出excel表
今天,人超級(jí)好的組長(zhǎng)交給我一個(gè)任務(wù),讓我完成導(dǎo)入導(dǎo)出用戶(hù)列表的功能。

后端
1.控制層寫(xiě)導(dǎo)入導(dǎo)出的接口

2.Service層寫(xiě)導(dǎo)入導(dǎo)出的具體方法
以下是導(dǎo)入數(shù)據(jù)的代碼,要用到FastExcel讀取數(shù)據(jù)后,再調(diào)用UserDao進(jìn)行數(shù)據(jù)的插入
public ResponseDTO<String> importUsers(MultipartFile file){
List<UserImportForm> dataList;
try{
dataList = FastExcel.read(file.getInputStream()).head(UserImportForm.class)
.sheet()
.doReadSync();
for(UserImportForm userImportForm:dataList){
UserEntity userEntity = SmartBeanUtil.copy(userImportForm,UserEntity.class);
userDao.insert(userEntity);
}
}catch(IOException e){
log.error(e.getMessage(),e);
throw new BusinessException("數(shù)據(jù)格式存在問(wèn)題,無(wú)法讀取");
}
if(CollectionUtils.isEmpty(dataList)){
return ResponseDTO.userErrorParam("數(shù)據(jù)為空");
}
return ResponseDTO.okMsg("成功導(dǎo)入"+dataList.size()+"條,具體數(shù)據(jù)為:"+ JSON.toJSONString(dataList));
}
前端
1.分為三步

2.第一步下載模板
<a-button @click="downloadExcel"> <download-outlined />第一步:下載模板</a-button>
直接將excel表單放在static文件夾下就可以了,前端就可以直接下載表單
function downloadExcel(){
window.open('http://localhost:1024/user.xlsx');
}
3.第二步選擇文件

4.第三步開(kāi)始導(dǎo)入
<a-button @click="onImportUsers"> <ImportOutlined /> 第三步:開(kāi)始導(dǎo)入 </a-button>
中間調(diào)用后端提供的接口/user/importUsers就可
async function onImportUsers(){
const formData = new FormData();
fileList.value.forEach((file)=>{
formData.append('file',file.originFileObj);
});
SmartLoading.show();
try{
let res = await userApi.importUsers(formData);
message.success(res.msg);
}catch(e){
smartSentry.captureError(e);
}finally {
SmartLoading.hide();
}
}
以上就是在Vue+SpringBoot應(yīng)用中實(shí)現(xiàn)導(dǎo)入導(dǎo)出excel表功能全過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于Vue SpringBoot導(dǎo)入導(dǎo)出excel表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue Element前端應(yīng)用開(kāi)發(fā)之菜單資源管理
在權(quán)限管理系統(tǒng)中,菜單也屬于權(quán)限控制的一個(gè)資源,屬于角色控制的一環(huán)。不同角色用戶(hù),登錄系統(tǒng)后,出現(xiàn)的系統(tǒng)菜單是不同的。菜單結(jié)合路由集合,實(shí)現(xiàn)可訪(fǎng)問(wèn)路由的過(guò)濾,也就實(shí)現(xiàn)了對(duì)應(yīng)角色菜單的展示和可訪(fǎng)問(wèn)路由的控制。2021-05-05
vue組件講解(is屬性的用法)模板標(biāo)簽替換操作
這篇文章主要介紹了vue組件講解(is屬性的用法)模板標(biāo)簽替換操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Vue中@click.native的使用方法及場(chǎng)景
在組件中時(shí)??吹紷click.native,在項(xiàng)目中遇到后,簡(jiǎn)單介紹下,這篇文章主要給大家介紹了關(guān)于Vue中@click.native的使用方法及場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2023-11-11
Vue實(shí)現(xiàn)兩個(gè)列表之間的數(shù)據(jù)聯(lián)動(dòng)的代碼示例
在Vue.js應(yīng)用開(kāi)發(fā)中,列表數(shù)據(jù)的聯(lián)動(dòng)是一個(gè)常見(jiàn)的需求,這種聯(lián)動(dòng)可以用于多種場(chǎng)景,例如過(guò)濾篩選、關(guān)聯(lián)選擇等,本文將詳細(xì)介紹如何在Vue項(xiàng)目中實(shí)現(xiàn)兩個(gè)列表之間的數(shù)據(jù)聯(lián)動(dòng),并通過(guò)多個(gè)具體的代碼示例來(lái)幫助讀者理解其實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下2024-10-10
vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析
這篇文章主要介紹了defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07

