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

网站建设自网站建设费用报价

网站建设自,网站建设费用报价,网站的主要功能,网站关键词布局情况#xff1a; 需要通过Excel表#xff0c;将数据导入到数据库#xff0c;但是后台人员出差了#xff0c;我又只会PHP#xff0c;没用过node#xff0c;所以只能前端导入Excel文件#xff0c;然后循环调用后台的单条添加接口了。 库#xff1a; Excel.js#xff08…情况 需要通过Excel表将数据导入到数据库但是后台人员出差了我又只会PHP没用过node所以只能前端导入Excel文件然后循环调用后台的单条添加接口了。 库 Excel.js版本4.3.0 CDN地址 script srchttps://cdn.bootcdn.net/ajax/libs/exceljs/4.3.0/exceljs.min.js/scriptExcel.js 中文文档https://gitee.com/alan_scut/exceljs 下面是动态Excel表单 下面是file文件Excel文件获取到的对象 下面是代码中输出的需要插入的数据 代码 使用方法 importExcal() // 全局函数执行完成后执行组件的钩子函数、组件事件、自定义事件// 导入Excel表 async function importExcal() {// 文件内容 (这里是从input file里面获取到的内容)var file input_file;// 提交后端数据的整体数组var data_arr [];// 行程的最大列数包含前面不变的var stay_col_num 0;if (file) {// 判断文件类型let filetype file.name.split(.)[file.name.split(.).length - 1]let filetypes .xlsx,.xlsif (filetypes.indexOf(filetype) -1) {this.$message({message: 请上传 .xlsx 或 .xls 文件。,type: warning})return;}// 读取文件文件const reader new FileReader();// file.raw是具体的文件内容需要看一下你获取到的是file.raw还是file[0]即可 将文件转为 ArrayBuffer 格式console.log(这里是获取到的file文件内容, file)// 这里要用 readAsArrayBuffer 转成buffer因为下面读取要用到 buffer 才可以reader.readAsArrayBuffer(file.raw);reader.onload function (event) {try {const result event.target.result;var workbook new ExcelJS.Workbook();// 读取 buffer 内容workbook.xlsx.load(result).then(async function () {// 迭代所有sheet 如果只有一个可以通过名称获取 var worksheet workbook.getWorksheet(My Sheet);workbook.eachSheet(async function (worksheet, sheetId) {// 清空数据数组data_arr [];// 获取 形成安排 的列数(从第8列开始的), 总不会超过100天所以写个100// 在这里获取 形成列的长度是因为这里是表头不会像内容一样出现空白单元格造成无法获取到最终列的情况for (let j 8; j 100; j) {// 当列到 行程安排 且j1 不是 行程安排的时候就是行程安排的列宽if (worksheet.getCell(${getLetter(j)}2).value 行程安排 worksheet.getCell(${getLetter(j 1)}2).value ! 行程安排) {stay_col_num j;// 如果两个都有值的话就跳出循环break;}}// 迭代工作表中具有值的所有行worksheet.eachRow(function (row, rowNumber) {// 数据是从第四行开始if (rowNumber 4) {// data_arr.push(row.values)// 每行的数据let row_data row.values;// 传给后端的对象let data_obj {guest: ,name: ,sex: ,company: ,job: ,phone: ,stay: []}// 循环每行的数据row_data.map(function (item, index, arr) {// 如果是前7列则是固定列的值直接复制即可否则的话则是 动态的行程安排if (index 7) {switch (index) {case 2:// 嘉宾类别data_obj.guest item ? item : ;break;case 3:// 姓名data_obj.name item ? item : ;break;case 4:// 性别data_obj.sex item ? item : ;break;case 5:// 单位data_obj.company item ? item : ;break;case 6:// 职务data_obj.job item ? item : ;break;case 7:// 手机号data_obj.phone item ? item : ;break;}} else {// 行程安排从第八列开始到形成的最后一列结束if (index 8 index stay_col_num) {if (worksheet.getCell(${getLetter(index)}${rowNumber}).value 是) data_obj.stay.push(worksheet.getCell(${getLetter(index)}3).value);}}})// 将插入后台的数据添加进数组data_arr.push(data_obj);}});console.log(全部需要插入数据库的数据的数组, data_arr)// 这里使用了 Promise 解决在for循环内使异步接口进行同步提交的问题文章后面有详细说明for (let i 0; i data_arr.length; i) {let result_data await createUser(data_arr[i]);if (!result_data.result) {// 如果出错就跳出循环this.$message({message: 第 ${i 1} 行数据 ${data_arr[i].name}(${data_arr[i].phone})由于 ${result_data.msg} 导入失败,type: error})// 跳出循环break;}}});});} catch (err) {this.$message({message: 读取文件错误,type: error})console.log(err, err);}};} else {this.$message({message: 请选择文件,type: error})} }// 添加用户信息接口 async function createUser(data) {return await new Promise(function (resolve, reject) {// 处理异步逻辑时候调用resolve和reject函数axios({method: POST,url: ${base_url}/api/add,headers: {// 没有可以不要token// authorization: bearer ${token}},// 数据data: data}).then(res {let resp res.data;if (resp.code 1) {if (resp.data.code 200) {resolve({result: true});}} else {resolve({result: false,msg: resp.msg});}}).catch(req {reject({result: false,msg: });});}); }// 获取第N个字母 function getLetter(num) {return String.fromCharCode(64 num); }代码中用到的方法总结 新建工作簿 var workbook new ExcelJS.Workbook(); 读取 buffer 内容 workbook.xlsx.load(data).then(function() { // 其他代码 }); 迭代所有sheet workbook.eachSheet(function(worksheet, sheetId) { // 其他代码 }); 按名称获取表格 var worksheet workbook.getWorksheet(‘My Sheet’); 按ID获取表格 var worksheet workbook.getWorksheet(1); 迭代工作表中具有值的所有行 worksheet.eachRow(function(row, rowNumber) { console.log(‘Row’ rowNumber ’ ’ JSON.stringify(row.values)); }); 获取单元格A2 var collectcell worksheet.getCell(‘A2’); for循环内使异步接口变成同步提交 我文章的地址前端JS for循环内异步接口变成同步提交JavaScript for循环异步变同步 遇见的一些问题 1. Excel.JS 支持的数据读取方式不同获取的数据类型不同。例如filestreambuffer 另外说一下 有兴趣的朋友也可以试试 SheetJS 感觉好像功能更多一些下次我再需要用到excel的时候也会尝试一下的。 SheetJS中文文档https://github.com/rockboom/SheetJS-docs-zh-CN
http://www.hkea.cn/news/14488915/

相关文章:

  • 网站开发 wenzhoudw做网站怎么替换字体
  • 网站建设需要哪些资料图书馆新生专栏网站建设
  • 嘉兴免费网站制作wordpress 图片不显示
  • 福建省建设厅官方网站菜鸟零基础如何自学编程
  • 订阅号怎么做网站广告公司简介简短大气
  • 运城网站建设公司建设特效网站
  • 深圳专业网站建设公司做网站算 自由职业者
  • 推荐几个没封的网站中国贸易服务网
  • 知名网站定制公司电话网站开发一般用什么技术
  • 做电脑系统那个网站好点龙岗网站建设电话
  • 网站建设芜湖房地产网站设计
  • 企业网站服务器多少钱seo好学吗入门怎么学
  • 建立一个国外的网站小白一步步做网站
  • 网站上的网站地图怎么做聊天网站站怎么做
  • 建设银行园区公积金管理中心网站建设公司网站的原则
  • 重庆市公司网站备案在哪了wordpress做产品页教程视频
  • 怎么做免费的网站推广王野天 演员
  • 网站排名怎么做上去衣柜全屋定制排名
  • 保定 网站制作wordpress 会员支付
  • 网站的推广平台有哪些国外网站设计风格
  • 头条网站怎么做的wordpress代码转义
  • 制造业小程序网站开发广告公司简介模板免费
  • 设计logo网站推荐书店网站建设
  • 甘州区建设局网站网站免费做招生宣传语
  • 网络班级网站建设交友app搭建
  • 注册网站会员 我们的信息外贸询单
  • 建设网站需要考虑什么电器工程东莞网站建设
  • 最好的网站建设公司网站内容规划怎么写
  • 做商务网站要多少钱长春搜索引擎优化
  • asp网站如何迁移给别人做网站必须有icp