笔记:项目中使用Excel导入时实现中英文的转换

330 阅读1分钟

背景

由于在项目中涉及到 Excel 表的导入导出,可以使用 xlsx 这个包可以很好的实现功能,这个包的核心原理是导入的时候把Excel的二进制信息转成了在 js 中的可操作对象,导出时就把数组或者对象转成一个文件。但是在导入的时候出现了一个问题:接口文档要求的是英文的数据。考虑到在实际应用场景中人事使用过程中都是以中文进行操作,所有我们来使用一些手段把数据格式进行中英文的转换。

假设数据如下

202265195750.bmp

则需要将 工号 转换为 workNumber 实现中英文互转

代码落地

这里借用了枚举的思想

// 中文转换为英文
    // 思路三步:
    // 1.先拿到所有的中文key
    // 2.将中文的 key 转为 英文 key
    // 3.拼装成英文对象
    
    transExcel(results) {
      // 先声明想要的数据
      const mapInfo = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName',
        '聘用形式': 'formOfEmployment'
      }
      return results.map(zhObj => {
        const enObj = {}

        // 开始第一步:拿到所有的中文key
        // 使用 object.key() 获取对象的所有属性名
        const zhKeys = Object.keys(zhObj)
        // 得到的格式:
        // zhKeys: ['入职日期', '姓名', '工号', '手机号', '转正日期', '部门']

        // 开始第二步:将中文的key转为英文的key
        zhKeys.forEach(zhKey => {
          // 根据入职日期中文, 取出对应的英文 timeOfEntry
          const enKey = mapInfo[zhKey]

          // 开始第三步:拼装成英文对象
          enObj[enKey] = zhObj[zhKey]
        })
        return enObj
      })
    }

然后打印结果

hSuccess({ results, header }) {
      console.log('Excel上传的数据:', results, header)
      console.log('Excel转为英文的结果:', this.transExcel(results))
    }

效果图

转换前:

202265201856.bmp

转换后:

202265201934.bmp