背景
由于在项目中涉及到 Excel 表的导入导出,可以使用 xlsx 这个包可以很好的实现功能,这个包的核心原理是导入的时候把Excel的二进制信息转成了在 js 中的可操作对象,导出时就把数组或者对象转成一个文件。但是在导入的时候出现了一个问题:接口文档要求的是英文的数据。考虑到在实际应用场景中人事使用过程中都是以中文进行操作,所有我们来使用一些手段把数据格式进行中英文的转换。
假设数据如下
则需要将 工号 转换为 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))
}
效果图
转换前:
转换后: