当前位置: 首页 > wzjs >正文

学做面包网站昆山网站建设公司

学做面包网站,昆山网站建设公司,wordpress怎么做app,徐州模板建站定制网站文章目录 前言使用在vue文件中的使用 前言 最近写小组官网涉及到了excel文件导入的功能 场景是导入小组成员年级 班级 邮箱 组别 姓名等基本信息的excel表格用于展示各组信息 使用 先下载js库 npm install xlsx为了提高代码的复用性 我将它写成了一个通用的函数 import ap…

文章目录

  • 前言
  • 使用
  • 在vue文件中的使用

前言

最近写小组官网涉及到了excel文件导入的功能 场景是导入小组成员年级 班级 邮箱 组别 姓名等基本信息的excel表格用于展示各组信息

使用

先下载js库

npm install xlsx

为了提高代码的复用性 我将它写成了一个通用的函数

import apiClient from "@/api/axios";
import * as XLSX from "xlsx";interface UserData {姓名: string;学号: string;邮箱: string;班级: string;年级: string;组别: string;电话: string;QQ: string;
}// 验证文件后缀
function validateFileExtension(fileName: string): boolean {return fileName.toLowerCase().endsWith(".xlsx");
}// 验证Excel字段
async function validateExcelFields(file: File): Promise<string | boolean> {return new Promise((resolve, reject) => {const reader = new FileReader();reader.onload = (e) => {try {const data = new Uint8Array(e.target?.result as ArrayBuffer);const workbook = XLSX.read(data, { type: "array" });const firstSheet = workbook.Sheets[workbook.SheetNames[0]];const jsonData = XLSX.utils.sheet_to_json<UserData>(firstSheet);if (jsonData.length === 0) {reject("Excel文件内容为空");return;}const requiredFields = ["姓名","学号","班级","年级","组别","电话","QQ",];const missingFields = requiredFields.filter((field) => !(field in jsonData[0]),);if (missingFields.length > 0) {reject(`文件缺少必要字段`);return;}resolve(true);} catch (error) {reject("文件解析失败");}};reader.onerror = () => reject("文件读取失败");reader.readAsArrayBuffer(file);});
}//批量导入
export async function processFiles(file: File) {if (!validateFileExtension(file.name)) {throw "请上传.xlsx格式的文件";}try {const validationResult = await validateExcelFields(file);if (validationResult !== true) {throw validationResult as string;}const formData = new FormData();formData.append("file", file);return await apiClient.post("/userManager/teamInfo/addUsers", formData, {headers: {"Content-Type": "multipart/form-data",},});} catch (error) {// 修改此处:将返回改为抛出if (error instanceof Error) {throw error.message;}throw typeof error === "string" ? error : "未知错误";}
}// 模拟非.xlsx 文件
const nonXlsxFile = new File([], "example.txt", { type: "text/plain" });
processFiles(nonXlsxFile).then((result) => {console.log(result);
});

该文件可以在用户上传时检查上传的文件后缀是否为xlsx 以及如果上传的文件后缀是xlsx
那么检查表格中是否有该有的字段 如果没有则直接拦截不发送请求

在vue文件中的使用

const handleXlsx = (e: Event) => {const target = e.target as HTMLInputElement;if (target.files) {processFiles(target.files[0]).then((response) => {showAlert("上传成功", "pass");updateData(grade.value, group.value);target.value = "";}).catch((error) => {showAlert(error, "error");});}
};
http://www.dtcms.com/wzjs/70650.html

相关文章:

  • 济南企业建站平台免费b站网站推广
  • 公安局打电话网站备案营销方案范文100例
  • 有哪些做的比较精美的网站天猫代运营
  • 青岛做网站的太原seo建站
  • 东莞网站建设公司哪家好新媒体推广渠道有哪些
  • wordpress 课百度网站排名优化
  • table表格 做的网站搜索引擎优化简称
  • 龙岩网站建设要多少费用关键词优化策略有哪些
  • 温州网站建设免费服务祁阳seo
  • 养殖p2p网站建设旅游新闻热点
  • 企业网站开发需要多少钱2022最新时事新闻及点评
  • 做网站还是app百度广告买下的订单在哪里找
  • 做网站的过程网店推广方案策划书
  • 学校网站建设流程中国十大电商平台
  • 网站大全软件百度推广一天烧几千
  • 免费建网站知乎国外网络推广
  • 百度网站优化软件精准营销包括哪几个方面
  • 建设银行给税对账在什么网站网站自然优化
  • 长沙营销型网站建设公司seo实战培训课程
  • 台州汇客网站建设百度关键词搜索排名代发
  • 网站制作 知乎百度空间登录
  • 上海做网站的公司排名搜索引擎优化排名工具
  • 什么网站可以接效果图做怎样做搜索引擎推广
  • 优化wordpress后台速度西安seo外包行者seo
  • 怎么用阿帕奇做网站百度指数怎么下载
  • 工程造价信息网官网信息价seo搜索优化是什么呢
  • 专业的建设企业网站网站制作费用
  • 网站建设中 html谷歌app下载 安卓
  • 如何做网站浏览pdf大兴今日头条新闻
  • 延庆长沙网站建设人力资源和社会保障部