fastapi+vue實現導入Excel表格的功能

1.前端部分

1.1 api設置

// 導入用戶
export function uploadUser(data) {const formData = new FormData();formData.append('file', data);  // data 是從文件上傳事件中獲取的文件對象return request({url: '/users/upload',method: 'post',headers: {'Content-Type': 'multipart/form-data'},data: formData,transformRequest: [(data) => data]  // 禁用默認的序列化行為})
}

1.2 導入按鈕

      <el-uploadclass="upload-demo"ref="upload"action="dummy-action":show-file-list="false" :before-upload="handleImportUser"><el-button type="primary" icon="el-icon-download" style="margin-left: 20px">導入</el-button></el-upload>

1.3 按鈕點擊事件調用接口

    // 導入的回調async handleImportUser(file) {if (!file.name.endsWith('.xlsx')) return this.$message.error('請上傳Excel文件!')if (file.size > 1024 * 1024 * 5) return this.$message.error('文件大小不能超過5MB!')const res = await uploadUser(file)if (res.code !== 200) return this.$message.error('導入失敗!')this.$message.success('導入成功!')this.getUserList()}

2. 后端部分

@user_router.post('/upload', summary='導入用戶')
async def user_upload(file: UploadFile):# 檢查文件類型是否為 Excelif not file.filename.endswith(('.xls', '.xlsx')):return base_response(code=400, msg='文件格式錯誤!')if file.size > 1024 * 1024 * 5:return base_response(code=400, msg='文件大小不能超過5MB!')# 讀取 Excel 文件wb = openpyxl.load_workbook(file.file)ws = wb.active# 遍歷 Excel 表格的每一行數據并保存到數據庫中for row in ws.iter_rows(min_row=2, values_only=True):  # Assuming first row is headertry:name, nick_name, phone, password = row# 數據校驗if not name or not password:raise ValueError('姓名和密碼不能為空!')if await User.exists(name=name):raise ValueError('用戶已存在!')if not re.match(r'^1[3-9]\d{9}$', str(phone)):raise ValueError('手機號碼格式錯誤!')# 將有效數據保存到數據庫中,這里假設有一個數據庫操作函數 save_user()await User.create(name=name, nick_name=nick_name, phone=phone, password=hash_password(str(password)))except ValueError as e:print(f"數據導入失敗:{e}")return base_response(code=200, msg='導入用戶成功!')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12327.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12327.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12327.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端CSS3基礎1(新增長度單位,盒子模型,背景,邊框,文本屬性,漸變,字體,2D變換,3D變換)

前端CSS3基礎1&#xff08;新增長度單位&#xff0c;盒子模型&#xff0c;背景&#xff0c;邊框&#xff0c;文本屬性&#xff0c;漸變&#xff0c;字體&#xff0c;2D變換&#xff0c;3D變換&#xff09; CSS3 新增長度單位CSS3 新增盒子模型相關屬性box-sizing怪異盒模型box-…

實現簡易版Vuex

從實現一個簡單的 Vuex 類來了解 Vuex 的工作原理。 實現思路 Vuex 下擁有 install 方法和 Store 類。即創建一個 Vuex 的模塊&#xff0c;這個模塊導出 install 方法和 Store 類。 install 方法 Vuex 是 Vue 的一個插件&#xff0c;所以需要實現 Vue 插件約定的 install 方…

Linux:ftp文件傳輸實驗

Linux&#xff1a;ftp文件傳輸實驗 實驗實現 # 安裝對應軟件 [rootserver120 ~]# dnf install vsftpd -y [rootserver120 ~]# dnf install lftp -y# 關閉防火墻以及開啟服務 [rootserver120 ~]# systemctl disable --now firewalld [rootserver120 ~]# systemctl enable --no…

ambari-server高可用配置方案

制品 https://kdocs.cn/l/cie4hSgvUunX 前置條件 環境需要支持VRRP協議 環境需要配置好yum源 變更影響面 變更不會影響其他組件 配置lb(需要客戶側配置并提供LB地址) 轉發方式選擇 主備 監聽端口為8080、8440、8441 協議為tcp 后端監聽選擇kde-offline1為主

【RAG 論文】UPR:使用 LLM 來做檢索后的 re-rank

論文&#xff1a;Improving Passage Retrieval with Zero-Shot Question Generation ???? EMNLP 2022, arXiv:2204.07496 Code: github.com/DevSinghSachan/unsupervised-passage-reranking 論文&#xff1a;Open-source Large Language Models are Strong Zero-shot Query…

【HR】阿里三板斧--20240514

參考https://blog.csdn.net/haydenwang8287/article/details/113541512 頭部三板斧 戰略能不能落地、文化能不能得到傳承、人才能不能得到保障。 頭部三板斧適用的核心場景有三個&#xff1a;一是戰略不靠譜&#xff1b;二是組織效率低、不聚心&#xff1b;三是人才跟不上。對…

c++ 各版本特性介紹

c C是一種高級編程語言&#xff0c;以其強大的功能、靈活性和高效性而聞名。它是由Bjarne Stroustrup在20世紀80年代初期在貝爾實驗室開發的&#xff0c;作為C語言的一個擴展。C不僅包含了C語言的所有特性&#xff0c;還引入了面向對象編程&#xff08;OOP&#xff09;的概念&…

基于Vue3+ElementPlus項目,復制文字到剪貼板功能實踐指南,揭秘使用js-tool-big-box工具庫的核心優勢

在前端開發項目中&#xff0c;很多時候有那么一個場景&#xff0c;就是要求將一段文案復制下來&#xff0c;這段文案可能是一串很長的id&#xff0c;可能是一條命令語句&#xff0c;可能是一小段文案&#xff0c;復制到剪貼板上。這樣有利于用戶復制到其他地方去&#xff0c;使…

自然資源-城鄉規劃行業未來二十年將何去何從?

自然資源-城鄉規劃行業未來二十年將何去何從? 城鄉規劃行業未來風口在以下幾個方向&#xff0c;看好啦&#xff01;緊跟國家發展戰略和政策背景。 1.大數據的城市規劃應用。 包含:公共數據平臺的搭建CIM&#xff0c;數據賦能治理&#xff0c;城市規劃中大數據應用的研究 等…

微軟必應bing國內官方代理商,廣告賬戶如何開戶?

微軟必應Bing作為全球知名的搜索引擎之一&#xff0c;其廣告平臺為眾多企業提供了廣闊的市場空間和精準的推廣機會。對于中國內地的企業而言&#xff0c;通過必應Bing開展國內廣告推廣不僅能夠觸及更廣泛的潛在客戶群體&#xff0c;還能有效提升品牌影響力。通過微軟必應Bing國…

【算法作業】均分卡牌,購買股票

問題描述 John 有兩個孩子&#xff0c;在 John病逝后&#xff0c;留下了一組價值不一定相同的魔卡&#xff0c; 現在要求你設計一種策略&#xff0c;幫John的經管人將John的這些遺產分給他的兩個孩子&#xff0c;使得他們獲得的遺產差異最小&#xff08;每張魔卡不能分拆&#…

搜索引擎的設計與實現(三)

目錄 5 系統詳細實現 5.1實現環境配置 5.2功能實現 5.2.1 建立索引 5.2.2 文件搜索實現 5.2.3 數據庫的連接配置 5.2.4 數據庫搜索實現 5.2.5 后臺數據編輯實現 前面內容請移步 搜索引擎的設計與實現&#xff08;二&#xff09; 免費源代碼&畢業設計論文 搜索…

git-刪除workspace.xml的跟蹤

問題描述 .gitignore 文件內容如下&#xff1a; .pyc *.pyc user_files/ .vscode/ __pycache__//.idea/misc.xml /.idea/modules.xml /.idea/inspectionProfiles/profiles_settings.xml /.idea/inspectionProfiles/Project_Default.xml /.idea/batrp_webbackend-server-dev.i…

NARUTO 復現記錄

1 環境配置 下載項目&#xff0c;一定要 git 下載全項目&#xff0c;下載完后要檢查third_parities 里面的coslam和neural_slam_eval 文件全不全。 git clone --recursive https://github.com/oppo-us-research/NARUTO.git 環境配置 注意 bash scripts/installation/conda…

番外篇 | 利用PyQt5+YOLOv5來搭建目標檢測系統(附可視化界面+功能介紹+源代碼)

前言:Hello大家好,我是小哥談。PyQt5是一個Python綁定的Qt庫,是用于創建圖形用戶界面(GUI)和其他應用程序組件的工具包。PyQt5提供了許多GUI元素,如按鈕、文本框、標簽等,也提供了許多Qt的功能,如網絡、數據庫、XML等。通過PyQt5可以在Python中使用Qt的豐富功能和強大的工…

克服虧損的負面影響 學學現貨白銀止損的方法

一個多月以前&#xff0c;現貨黃金的上漲還十分強勁&#xff0c;一度還逼近歷史的高位30大關。但是我們看近半個月以來&#xff0c;現貨白銀價格出現了調整。很多在高位買入的投資者都承受了較大的虧損&#xff0c;這時候就凸顯出了現貨白銀止損的作用。如果投資者能夠通過近期…

Git 基礎使用(2) 分支管理

文章目錄 分支概念分支使用查看分支分支創建分支切換分支合并合并沖突分支刪除 分支管理快進模式分支策略內容保存錯誤處理 分支概念 &#xff08;1&#xff09;分支概念 Git分支是指在版本控制系統Git中&#xff0c;用來表示項目的不同工作流程或開發路徑的一個重要概念。通過…

【cmake】Windows 環境下編譯第三方依賴源碼(以編譯Xerces庫為例)

第三方依賴源碼的編譯分為兩種&#xff0c;一種是使用 Configure 腳本編譯&#xff0c;另一種是使用 CMakeLists.txt 編譯。Xerces 3.2.3 的編譯方式是 CMakeLists.txt 腳本編譯。 必要軟件&#xff1a; CMake &#xff08;CMake | Download&#xff09;Visual Studio 2019&a…

前端AJAX講解

目錄 1.AJAX是什么&#xff1f; 2.異步交互和同步交互 3.AJAX常見應用情景和優缺點 4.AJAX的優缺點 5.AJAX發送異步請求&#xff08;四步操作&#xff09; 6.經典案例 1.AJAX是什么&#xff1f; AJAX即“Asynchronous JavaScript and XML”&#xff08;異步的JavaScript與…

指針基礎實踐

文章目錄 1.聲明指針2.初始化指針3.指針地址和大小&#xff0c;值4.指針解引用,修改值5.指針指向堆內存&#xff0c;修改值6.申請堆內存并釋放7.數組釋放8.指針運算9.指針遞增10.指針遞減11.指針常量12.常量指針13.常量指針指向常量 1.聲明指針 2.初始化指針 3.指針地址和大小…