xlsx的使用。vue导入Excel表单,并转成JSON字符串。

3月9日 周三
import XLSX from 'xlsx'; // 
import * as XLSX from 'xlsx'; // 数据导出导入所需要的依赖,
	新建一个XLSX对象,将xlsx文件里的所有方法添加到XLSX中。+++
	
	
	
xlsx的使用,
		先安装 XLSX 插件
		npm install xlsx --save

html部分

请添加图片描述

 <input
		      type="file"
		      ref="fileTemp"
		      accept=".xlsx,.xls"
		      @change="getImportFile"
		    />
			
	在所需要的文件中引用,
		import * as XLSX from 'xlsx'; // 数据导出导入所需要的依赖,
		新建一个XLSX对象,将xlsx文件里的所有方法添加到XLSX中。+++
		import XLSX from 'xlsx'; // 会引不进去,原因未知。

	// 获取文件
	    getImportFile() {
	      if (this.$refs.fileTemp && !this.$refs.fileTemp.files[0]) return false;
	      const selectedFile = this.$refs.fileTemp.files[0];
	      console.log(selectedFile);
	      console.log(XLSX);
	
	      this.readFile(selectedFile);
	    },
	    //将文件转换成 JSON
	    readFile(file) {
	      let that = this;
	      let reader = new FileReader();
	      reader.onload = function (e) {
	        let wb = XLSX.read(e.target.result, { type: "binary" }); // 读取文件
	        let wbSheetName = wb.SheetNames[0];
	        const wbSheet = wb.Sheets[wbSheetName];
	        // 解析文件 {defval: ''}=>防止单元格为空的时解析出来的结果缺少相应的key
	        let selectFileData = XLSX.utils.sheet_to_json(wbSheet, { defval: "" });
	        if (!selectFileData.length) {
	          console.log(`上传的文件数据为空!`);
	          return false;
	        } else {
	          console.log(selectFileData);
	        }
	        console.log(selectFileData);
	        
			//对获取到的对象数组进行操作
	        for (let i = 0; i < selectFileData.length; i++) {
	          delete selectFileData[i].__EMPTY;
	          //操作时间,Excel会将时间类型转换成 文本类型,需要反相转成时间
	          selectFileData[i].JZSJ = that.formatDate(selectFileData[i].JZSJ , '/')
	        }
	        console.log(selectFileData);
	        
			//将对象数组 转换成 JSON类型
	        let data = JSON.stringify(selectFileData);
	        console.log(data);
	
	        // that.$set(that.textarea3, '', data)
	        that.textarea3 = data;
	        console.log(that.textarea3);
	      };
	    
	      reader.readAsBinaryString(file);
	    },
	
	    //转换时间
	    formatDate(numb, format) {
		//第二种写法,上一种写法会导致时间 +-1天
 	let time = new Date(
        (numb - 25567) * 24 * 3600000 -
          5 * 60 * 1000 -
          43 * 1000 -
          24 * 3600000 -
          8 * 3600000
      );

      let year = time.getFullYear() + "";
      let month = time.getMonth() + 1 + "";
      let date = time.getDate() + "";
      if (format && format.length === 1) {
        return year + format + month + format + date;
      }
      return (
        year +
        (month < 10 ? "0" + month : month) +
        (date < 10 ? "0" + date : date)
      );

	    },

原文链接:https://blog.csdn.net/Wangyuan_wo/article/details/121424346

原文链接:https://blog.csdn.net/qq_41646249/article/details/103031603?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值